商店界面上显示的报错,大多含糊其辞,有时只写「文件有问题」。
所以第一件该做的事,是拿它过一遍叫作EPUBCheck的校验工具。这是W3C发布的官方工具,免费。也有可以在线校验的服务。
这个工具会具体指出「哪个文件的第几行,出了什么问题」, 比商店的报错信息更容易找到原因。
EPUBCheck没报错却被商店拒绝时,多半不是EPUB规格的问题,而是没有满足商店自己的要求。请参考后面的章节。
个人做EPUB时,遇到的报错基本就那么几类。
EPUB文件里有一个叫 mimetype 的小文件,规定是要放在ZIP的最前面,而且不压缩。
用普通的压缩软件把文件夹打成ZIP,满足不了这个条件。这是手工组装EPUB时最常出现的问题。
EPUB里包含的所有文件,都必须登记在 <manifest> 中,也就是 content.opf 里。
加了图片却忘了登记,或者反过来登记了的文件实际并不存在——这种不一致就会报错。
EPUB 3规定下列信息为必填。
•dc:title(书名)
•dc:language(语言。日文写 ja)
•dc:identifier(标识符)
•dcterms:modified(更新时间)
目录(nav.xhtml)里链接指向的文件不在书中。删掉了章节却没更新目录时就会这样。
EPUB的正文用XHTML书写,写法比普通HTML更严格。 标签忘了闭合,或者写成<br> (正确写法是 <br />),都会报错。
把HTML标签直接写进原稿时,容易出这个问题。
EPUBCheck报错为零却被商店拒绝,那就不是规格的问题,而是商店自己的要求。
各商店的投稿要求可能更新。最新信息请务必在该商店的官方帮助中确认。
包括本文在内,第三方整理的信息都可能过时。把报错信息里的原文直接拿到官方帮助里搜索,最为可靠。
亚马逊会把读入的EPUB转换成自家格式。问题可能出在这个转换阶段,所以投稿前先用Kindle Previewer确认,能更快地把原因区分开。
如果Previewer能打开却在投稿时被拒,那么问题更可能出在登记信息或审核,而不是文件本身。
EPUBCheck的输出是英文,但只要知道怎么看就不难。
| 标示 | 含义 |
|---|---|
| FATAL | 致命。文件根本不成立 |
| ERROR | 违反规格。必须修改 |
| WARNING | 警告。能用,但不推荐 |
| INFO | 提示。多数不必处理 |
请先只看FATAL和ERROR。 WARNING大多可以就那样发布。
几十条报错排在一起看着绝望,但多数都源自同一个原因。
比如manifest里只写错了一行,从它引用的所有文件就都会报错。从上往下,只改最前面那一条再重新校验,数量常常一下子就少了。
如果是把工具生成的EPUB手工编辑后弄坏了,从原稿重做往往更快。与其一条条消灭报错,不如改好原稿再转换一次,更可靠。
规格上明明正确、却会在读者的环境里出问题的地方,EPUB诊断会用你的语言指出来。全部在浏览器内完成,文件不会发送到任何地方。免费,无需注册。