EPUB 文件其实是一个 zip 包——拆开看看里面有什么

如果你把一个 EPUB 电子书的后缀从 .epub 改成 .zip,然后用解压软件打开,你会发现里面居然是一堆网页文件。没错,EPUB 本质上就是一个打包好的小型网站。这篇文章带你拆开一个 EPUB,看看里面到底有什么,每个文件负责什么,以及做 EPUB 时容易踩哪些坑。
一、EPUB 的本质:一个打包的微型网站
EPUB 全称 Electronic Publication,是国际数字出版论坛(IDPF)制定的开放电子书标准。它的核心设计理念是:内容用网页技术描述,然后用 zip 压缩打包。这个设计理念让 EPUB 成为数字出版领域最开放、最灵活的格式之一。
也就是说,EPUB = HTML(内容)+ CSS(样式)+ 图片等媒体资源 + 一些元数据文件,最后整体压缩成一个 .epub 文件。
所以 EPUB 和 PDF 完全不一样:
- PDF 是固定版式文档;
- EPUB 是可重排的网页文档。
这种设计让 EPUB 具有极强的开放性和灵活性。它不像 PDF 那样依赖特定厂商的软件,任何支持 HTML 的浏览器或阅读器理论上都能解析 EPUB 内容。这也是 EPUB 能成为主流电子书格式的重要原因。
EPUB 的发展经历了多个版本。EPUB 2 是早期版本,功能相对简单;EPUB 3 是目前主流版本,支持多媒体、MathML 公式、SVG 图形、固定版式等现代功能;EPUB 3.3 则进一步细化了规范,提升了可访问性和互操作性。
二、拆开 EPUB 后能看到什么
用 zip 解压一个 EPUB,通常会看到以下结构:
mybook.epub/
├── mimetype # 固定声明:application/epub+zip
├── META-INF/
│ └── container.xml # 指向 OPF 文件位置
└── OEBPS/
├── content.opf # 书籍元数据、章节清单、资源清单
├── toc.ncx # 旧版目录(兼容需要)
├── nav.xhtml # 新版目录导航
├── chapter01.xhtml # 第一章内容
├── chapter02.xhtml # 第二章内容
├── style.css # 样式文件
└── images/
├── cover.jpg
└── figure01.png
这就是 EPUB 的内部世界。它不像 PDF 那样是一堆二进制对象,而是一本结构清晰、可拆解重组的小型网站。

三、每个文件都做什么
1. mimetype
这是一个纯文本文件,只有一行:
application/epub+zip
它告诉系统和阅读软件:这是一个 EPUB 文件。这个文件必须没有被压缩地放在 zip 包的第一位。如果 mimetype 被压缩了,某些严格的阅读器会报错或无法识别文件。
2. META-INF/container.xml
这是 EPUB 的入口文件,告诉阅读器真正的书籍描述文件(OPF)在哪里。
<?xml version=“1.0” encoding=“UTF-8”?>
<container version=“1.0” xmlns=“urn:oasis:names:tc:opendocument:xmlns:container”>
<rootfiles>
<rootfile full-path=“OEBPS/content.opf” media-type=“application/oebps-package+xml”/>
</rootfiles>
</container>
一个 EPUB 包可以包含多本书,所以 container.xml 里用 rootfiles 列出了所有根文件。最常见的情况是只有一本书,对应一个 OPF 文件。
3. content.opf
这是 EPUB 的核心描述文件,包含三类信息:
- metadata:书名、作者、出版社、ISBN、语言、出版日期、权限说明等;
- manifest:列出所有资源文件(HTML、CSS、图片、字体、音频、视频)并分配唯一 ID;
- spine:定义章节的阅读顺序,即读者按按钮时依次显示哪些文件。
metadata 越完整,电子书在图书馆、书店、阅读平台上的可发现性就越好。例如,规范的 ISBN、主题词、摘要信息,能帮助读者更快找到这本书。
4. toc.ncx / nav.xhtml
这是目录文件。老版本 EPUB 2 用 toc.ncx,新版本 EPUB 3 用 nav.xhtml。
toc.ncx 是 XML 格式,结构相对复杂;nav.xhtml 本质是一个普通 XHTML 文件,用 HTML5 的 nav 元素定义目录,更易于阅读和编辑。EPUB 3 通常同时保留两者以兼容旧设备。
5. xhtml 文件
每一章内容其实是一个 XHTML 网页文件。阅读器拿到这些文件后,根据屏幕大小和 CSS 样式重新渲染。
XHTML 和 HTML 很像,但更严格。例如,所有标签必须闭合,属性值必须加引号,嵌套必须正确。不规范的 XHTML 会导致 EPUB 验证失败。
6. CSS 文件
控制字体、字号、行距、段间距、图片样式等。好的 CSS 设计能让同一本书在不同设备上都有舒适的阅读体验。
EPUB 支持的 CSS 属性有一定限制,阅读器不会支持所有网页 CSS 特性。因此做 EPUB 样式时要兼顾兼容性和简洁性。例如,一些复杂的 CSS Grid 布局、Flexbox 高级特性在某些阅读器上可能不被支持,建议优先使用基础的盒模型、浮动、定位等兼容性更好的布局方式。
7. 媒体资源
包括封面图片、正文插图、字体文件、音频、视频等。这些资源需要在 content.opf 的 manifest 中注册,并在 XHTML 中正确引用。引用路径通常使用相对路径,例如 images/cover.jpg。如果路径写错一个字母,阅读器就无法加载该资源。
四、为什么 EPUB 要设计成 zip 包
这个设计有几个好处:
- 开放透明:任何人都能拆开看、修改、学习,不需要专用解密工具;
- 自适应屏幕:基于 HTML/CSS,天然支持响应式排版;
- 可访问性强:支持字体缩放、朗读、夜间模式、屏幕阅读器等功能;
- 易于转换:可以从 EPUB 转出为其他格式,也方便做内容结构化;
- 便于分发:zip 压缩后文件体积较小,适合网络传播;
- 标准化程度高:IDPF 和 W3C 共同维护规范,跨平台兼容性好;
- 便于调试和维护:因为本质是文本文件,出现问题时可以直接解压查看、修改、重新打包,不需要专用解密工具。
五、EPUB 与其他电子书格式对比
除了 EPUB,市面上还有 MOBI、AZW、PDF 等常见电子书格式。了解它们的特点,有助于选择合适的格式:
| 格式 | 特点 | 主要使用场景 |
|---|---|---|
| EPUB | 开放标准、流式重排、兼容性好 | 通用电子书、数字出版 |
| MOBI | 亚马逊早期格式、功能较简单 | 旧款 Kindle 设备 |
| AZW / AZW3 | 亚马逊专有格式、支持更多功能 | Kindle 电子书商店 |
| 固定版式、保留原貌 | 论文、合同、扫描件 | |
| TXT | 纯文本、无版式 | 简单小说、低端设备 |
EPUB 的优势在于开放性和灵活性。它不是某一家公司的专有格式,因此被大多数阅读软件和硬件支持。对于出版机构和内容平台来说,做 EPUB 意味着不会被单一平台绑定。
六、做 EPUB 时容易踩的坑
1. 资源路径写错
content.opf 里引用的文件路径必须和实际文件路径一致,否则阅读器找不到图片或章节。路径大小写、相对路径层级都要仔细检查。
2. mimetype 被压缩
如果 zip 压缩时把 mimetype 也压缩了,某些阅读器会报错。正确做法是 mimetype 不压缩且放在 zip 包第一位。
3. 目录文件缺失
缺少 toc.ncx 或 nav.xhtml,会导致电子书没有目录跳转。EPUB 3 要求至少包含 nav.xhtml。
4. HTML 不规范
EPUB 要求内容文件是格式良好的 XHTML,标签不闭合或嵌套错误都会导致解析失败。常见错误包括 img 标签没自闭合、属性缺少引号、特殊字符未转义等。
5. 元数据不完整
书名、作者、语言等核心元数据缺失,会影响电子书在平台上的展示和检索。
6. 图片和字体未嵌入
如果 XHTML 引用了外部图片或字体,但没有打包进 EPUB,换台设备打开就会显示异常。
七、企业做 EPUB 的建议
如果你需要批量制作 EPUB,建议:
- 建立标准模板:定义好 content.opf、目录文件、CSS 样式,确保每本书结构一致;
- 用脚本自动化生成:特别是目录、元数据、manifest,手动容易出错;
- 做多设备测试:在手机、平板、Kindle、微信读书等阅读器上验证显示效果;
- 做 EPUB 校验:使用 epubcheck 等工具检查规范符合性,提前发现路径错误、HTML 不规范、元数据缺失等问题;
- 管理字体和图片版权:确保使用的字体和图片有合法授权,避免侵权风险;
- 找专业团队:如果涉及大量公式、表格、复杂排版,建议交给有经验的数字资源加工团队。
此外,企业在制作 EPUB 时还应关注可访问性(Accessibility)。这意味着电子书应该能够被视障用户通过屏幕阅读器访问,应该支持字体放大、高对比度模式、语义化标题结构等。EPUB 3 规范本身就强调可访问性,规范的 EPUB 文件更容易通过无障碍认证,也更容易进入图书馆、学校等公共阅读渠道。
对于出版社和知识服务机构来说,EPUB 不仅是一种电子书格式,更是内容数字化的重要基础。规范的 EPUB 文件可以方便地转成网页、APP 内容、有声书脚本,甚至作为知识图谱的数据来源。
未来,随着 AI 和大模型技术的发展,EPUB 等结构化电子书格式将发挥更大价值。因为 EPUB 内容本身带有标题、段落、章节、元数据等语义信息,更容易被大模型理解和处理。相比扫描版 PDF,EPUB 更适合做知识提取、智能问答、内容推荐等高级应用。
关于我们
本文由 北京海天雷鹰科技有限公司 整理发布。
公司成立于 2001 年,专注档案整理与数字化、数据标注、知识图谱构建、数字资源加工、试题入库等一站式数据服务 20 余年。持有 ISO 9001 / 14001 / 45001 / 27001 / 20000-1 五体系认证、8 项自主软件著作权、企业信用 AAA 等级,采用三重质检机制(自检→互检→抽检)。
如果您有 EPUB 制作、数字资源加工或电子书出版方面的需求,欢迎联系我们:
- 电话:010-84907553
- 邮箱:736232918@qq.com
- 官网:www.beijingocr.com
本文为原创科普内容,如需转载请注明出处。关注我们,持续分享数据服务行业的实战经验与行业洞察。
