书做好了却导不进去,或者导进去显示得一塌糊涂——这类问题里,真正文件损坏的只占很小一部分,绝大多数是各设备的入口规则不同造成的。
先记住一条贯穿全文的原则:
设备读的是文件内部的元数据,不是文件名。
你把文件重命名成《三体 - 刘慈欣.epub》,书库里照样显示「未知」——因为设备根本不看文件名。
两条通道的取舍
| 邮件推送 | USB 拷贝 | |
|---|---|---|
| 自动转格式 | 会 | 不会 |
| 阅读进度跨设备同步 | 会 | 不会 |
| 自动生成封面 | 通常会 | 不一定 |
| 体积限制 | 有,几十 MB 量级 | 无 |
| 经过服务器 | 是 | 否 |
| 失败时的反馈 | 常常没有报错,书就是不出现 | 立刻能看到 |
选择很直接:
- 体积小、想多设备同步、格式没把握 → 推送
- 大文件、含内嵌字体、隐私敏感、批量导入 → USB
中文书要特别注意体积——这是超限的头号原因,下面单独讲。
元数据决定了书库长什么样
导入后显示不对,几乎都能对应到某个具体字段:
| 症状 | 缺失字段 |
|---|---|
| 书名显示成文件名或乱码 | title |
| 作者显示「未知」 | creator |
| 系列书排序混乱 | 系列名 + 序号 |
| 语言显示成英文、字体回退错 | language(应为 zh) |
| 封面不显示 | 封面引用方式 |
用EPUB 元数据编辑把这几个字段补齐即可。各阅读器认哪个字段名、系列字段为什么有好几种写法,见EPUB 元数据与阅读器兼容。
一个必须知道的坑:改完元数据后直接重新导入,很多设备不会刷新——你看到的还是旧信息。正确做法是先在设备上彻底删除这本书(不是移出书架,要删本地文件),重启阅读程序,再导入新文件。
封面不刷新:多半是缓存
封面有三处来源:
- OPF 元数据里用
meta标签指明的封面项 manifest里带cover-image属性的图片- 部分阅读器退而求其次,直接抓正文第一页渲染成缩略图
排查顺序:
- 先确认文件里到底有没有封面图
- 有图但不显示 → 引用方式该设备不认,重新设置一次封面通常能解决
- 图和引用都对但还是旧的 → 是缓存
清缓存的通用办法:彻底删除 → 重启阅读程序 → 重新导入。有「重建书库索引」选项的优先用它。实在不行,换个文件名再导入可以骗过一部分按文件名做缓存键的实现。
预防办法很简单:批量整理时先把元数据和封面全部改好,再统一导入,避免反复导入产生一堆缓存残留。
顺序乱、目录点不动
第一步永远是换第二个阅读器打开验证:
- 两个都错 → 是书的问题
- 只有一个错 → 是兼容性问题
属于书的问题:
- 顺序乱——EPUB 的阅读顺序只认 OPF 里的 spine 定义,文件名排序完全不影响它。spine 错了,任何阅读器都会错
- 目录点不动——目录文件的锚点指向了不存在的位置,常见于从别的格式转换时锚点没跟着迁移
- 多出空白章节——封面页、版权页也被列进了目录
属于兼容性的问题:
- 老设备只认 EPUB 2 的 NCX 目录,不认 EPUB 3 的 nav 文档——重新生成一份带 NCX 的通常能解决
- 部分阅读器对嵌套层级支持有限,三级以上目录会被压平
对从 TXT 或网页抓来的内容,重新生成一份结构规范的 EPUB 比在坏文件上修补省事得多——用TXT 转 EPUB重做一遍,章节正则的调法见网文 TXT 转 EPUB 的章节识别。
中文书为什么特别容易失败
内嵌中文字体是体积大头:
- 英文字体只需覆盖百来个字形,中文一套常用字集是几千个,完整字库常在 5-15 MB
- 一本纯文字的中文小说本体可能只有几百 KB,内嵌两套字体后体积翻几十倍
- 推送的附件限制通常在几十 MB 量级,几本合并或多套字体就超了
三个解法,按推荐度排序:
- 不内嵌字体——让设备用自己的中文字体。绝大多数场景下阅读体验没有区别
- 字体子集化——确实需要特定字体(古籍、书法类)时,只保留书里实际用到的字,体积能从十几 MB 降到几十 KB。原理见CJK 字体子集化
- 改用 USB 拷贝,直接绕开体积限制
另一类中文特有的失败是编码:从 TXT 生成 EPUB 时源文件是 GBK 却按 UTF-8 读,生成出来全是乱码——设备能打开但看不了。这类问题必须在生成前处理好。
批量导入几百本
核心原则:导入前统一元数据,导入后靠元数据分组。文件名和目录结构在设备上基本不起作用。
导入前三件事:
- 统一书名格式——去掉「(校对版)」「精校」「TXT下载」这类来源标记,它们会污染排序
- 写全作者和系列——系列名 + 序号是分组的唯一可靠依据,缺一个就乱
- 语言字段统一为
zh——影响字体回退和断行规则
导入策略:
- 分批导入,每批几十本。一次性塞几百本,很多设备的索引会卡住甚至崩溃
- 每批导完确认书库正常再导下一批
- 用 USB 而不是推送,避免逐本操作
长期维护:本地保留一份组织好的主库(按 作者 / 系列 / 序号 书名 建目录),设备上的只是投放副本;同一本书的不同格式放同一目录;定期校验文件完整性——损坏的 EPUB 平时看不出来。
最后一条经验:花在导入前整理元数据上的时间,是花在导入后逐本修的十分之一。
格式本身该怎么选、各设备认什么,见电子书格式决策表。