EPUB FACTORY
EPUB知识 / 疑难解决
疑难解决

投稿出错时
常见原因与修改方法

做好的EPUB商店不收,或者校验工具报错。原因其实集中在几种模式上。本文梳理该先确认什么,以及最常见的那些报错到底在说什么。
本文内容
  1. 先过一遍校验工具
  2. 常见的报错与改法
  3. 校验通过却不被接受时
  4. 怎么读报错

先过一遍校验工具

商店界面上显示的报错,大多含糊其辞,有时只写「文件有问题」。

所以第一件该做的事,是拿它过一遍叫作EPUBCheck的校验工具。这是W3C发布的官方工具,免费。也有可以在线校验的服务。

这个工具会具体指出「哪个文件的第几行,出了什么问题」, 比商店的报错信息更容易找到原因。

如果没有报错

EPUBCheck没报错却被商店拒绝时,多半不是EPUB规格的问题,而是没有满足商店自己的要求。请参考后面的章节。

常见的报错与改法

个人做EPUB时,遇到的报错基本就那么几类。

关于mimetype的报错 ZIP的做法不对

EPUB文件里有一个叫 mimetype 的小文件,规定是要放在ZIP的最前面,而且不压缩

用普通的压缩软件把文件夹打成ZIP,满足不了这个条件。这是手工组装EPUB时最常出现的问题。

改法 用EPUB制作工具重新生成。如果非要手工重新压缩,需要一套先把mimetype以不压缩方式存入的步骤。
关于文件登记的报错 收录的文件没登记,或者登记了却不存在

EPUB里包含的所有文件,都必须登记在 <manifest> 中,也就是 content.opf 里。

加了图片却忘了登记,或者反过来登记了的文件实际并不存在——这种不一致就会报错。

改法 把manifest的清单和实际的文件构成对照一遍。用工具重新生成最可靠。
关于必填信息的报错 书目信息不全

EPUB 3规定下列信息为必填。

dc:title(书名)
dc:language(语言。日文写 ja
dc:identifier(标识符)
dcterms:modified(更新时间)

改法 确认是不是把输入栏留空就转换了。尤其是书名,那是会显示在读者书架上的重要项目。
关于链接的报错 目录的链接目标不存在

目录(nav.xhtml)里链接指向的文件不在书中。删掉了章节却没更新目录时就会这样。

改法 确认目录的链接目标。改过原稿之后,重做一遍EPUB更安全。
关于XHTML写法的报错 标签忘了闭合、写法有误

EPUB的正文用XHTML书写,写法比普通HTML更严格。 标签忘了闭合,或者写成<br> (正确写法是 <br />),都会报错。

把HTML标签直接写进原稿时,容易出这个问题。

改法 把HTML标签从原稿里去掉。需要修饰时,使用工具支持的记法。

校验通过却不被接受时

EPUBCheck报错为零却被商店拒绝,那就不是规格的问题,而是商店自己的要求

常见的要求

要求会变

各商店的投稿要求可能更新。最新信息请务必在该商店的官方帮助中确认。

包括本文在内,第三方整理的信息都可能过时。把报错信息里的原文直接拿到官方帮助里搜索,最为可靠。

Kindle的情况

亚马逊会把读入的EPUB转换成自家格式。问题可能出在这个转换阶段,所以投稿前先用Kindle Previewer确认,能更快地把原因区分开。

如果Previewer能打开却在投稿时被拒,那么问题更可能出在登记信息或审核,而不是文件本身。

怎么读报错

EPUBCheck的输出是英文,但只要知道怎么看就不难。

ERROR(RSC-001): book.epub/OEBPS/content.opf(12,45):
  File "OEBPS/image/cover.jpg" could not be found.
↑类别 ↑哪个文件的第几行 ↑什么问题
标示含义
FATAL致命。文件根本不成立
ERROR违反规格。必须修改
WARNING警告。能用,但不推荐
INFO提示。多数不必处理

请先只看FATAL和ERROR。 WARNING大多可以就那样发布。

报错一大堆的时候

几十条报错排在一起看着绝望,但多数都源自同一个原因。

比如manifest里只写错了一行,从它引用的所有文件就都会报错。从上往下,只改最前面那一条再重新校验,数量常常一下子就少了。

有时重做反而更快

如果是把工具生成的EPUB手工编辑后弄坏了,从原稿重做往往更快。与其一条条消灭报错,不如改好原稿再转换一次,更可靠。

做一个能通过校验的EPUB

EPUB FACTORY生成的文件,都会经过符合标准的校验并把结果显示出来。无需注册,也不用安装。

试试EPUB FACTORY
EPUBCheck通过了却还是不放心时

规格上明明正确、却会在读者的环境里出问题的地方,EPUB诊断会用你的语言指出来。全部在浏览器内完成,文件不会发送到任何地方。免费,无需注册。

诊断EPUB →