如何修复推送失败的 EPUB 格式电子书文件
前不久,亚马逊 Kindle 个人文档服务已原生支持推送 EPUB 格式,但是很多小伙伴在尝试推送后反馈,有个别的 EPUB 格式电子书文件无法成功推送,会收到如下所示的系统退信。
书伴从几位小伙伴那里收集到一些推送失败的 EPUB 文件,并做了一些测试以找出这些“问题文件”的共通之处,发现这些问题可以通过较为便捷的方式解决,现将解决方法分享如下。
一、问题分析
亚马逊的个人文档服务对推送的 EPUB 文件有较强的容错机制,即便有些内容不符合 EPUB 规范,一般情况下也能被正常处理,但是唯独对 EPUB 2.0 的导航控制文件 toc.ncx 及 EPUB 3.0 的导航文档 nav.xhtml 比较敏感,如果这两个文件存在“错误”,就会大概率导致推送失败。
对于 EPUB 2.0 的 toc.ncx 文件,常见的错误是由于 EPUB 电子书制作不规范,导致出现了重复的 playOrder 的值,当你用 EPUBCheck 验证这样的电子书时,会看到如下所示的错误提示:
Error while parsing file: identical playOrder values for navPoint/navTarget/pageTarget that do not refer to same target
对于 EPUB 3.0 的 nav.xhtml 文件,即便是符合 EPUB 规范,Kindle 个人文档服务也无法正确处理,而违反规范删掉所有导航列表后反倒可以正确处理。这可能是因为 Kindle 个人文档服务负责格式转换的程序未能很好的支持 EPUB 3.0 导致的,今后是否会有所改进有待观察。
二、解决方法
尽管可以使用 EPUB 验证工具 EPUBCheck 找出 EPUB 文件所有不符合规范的地方,但是为了提高效率,不建议这样做,毕竟最终目的是让 EPUB 文件能被 Kindle 个人文档服务正常处理。
这里推荐使用 EPUB 编辑器 Sigil,通过其提供的一些便捷功能快速修复上面提到的那些“错误”。
通过下面的链接下载并安装 Sigil 软件(注意选择适用于你所用操作系统的版本):
-
下载 Sigil:https://fere.link/ryfsr9
安装完成后,用 Sigil 打开推送失败的 EPUB 文件。这时可能会出现如下所示对话框:
提示信息的大意是:此 EPUB 中的 HTML 文件格式欠佳,或缺失了 DOCTYPE、html、head、body 元素。Sigl 会自动修复这些文件,尽管在极端情况下,这可能会导致轻微的数据丢失。
除非有特殊需要,建议点击【Yes】按钮让 Sigil 自动修复 EPUB 文件中有问题的代码。
接下来修复 EPUB 2.0 的 toc.ncx 文件或 EPUB 3.0 的 nav.xhtml 文件。依次点击菜单【Tools → Table Of Contents → Generate Table Of Contents…】(或按快捷键【Command + T】)。
最后点击左上角的软盘图标按钮(或按快捷键【Command + S】)保存修改后的文件。
至此,如果你的 EPUB 文件符合上面的问题描述,修复后的 EPUB 文件就能正常推送了。
由于受限于 EPUB 文件样本数量,以上解决方法可能无法覆盖所有情况。如果你有更好的解决方案或小技巧,也欢迎在本文下方留言分享。
三、一点补充
尝试自行修复 EPUB 文件时,你可能需要知道 EPUB 文件都存在哪些问题,书伴推荐为 Sigil 安装一款名为 EpubCheck 的插件,该插件可检测当前打开的 EPUB 文件所有违反规范的地方。
-
下载 EpubCheck 插件:https://fere.link/qh8snk
插件的安装方法为,下载 EpubCheck 插件压缩包,依次点击 Sigil 菜单【Plugins → Manage Plugins】,在弹出的对话框中,点击【Add Plugin】选择插件压缩包打开即可完成安装。
另外,运行 Sigil 的 EpubCheck 插件需要确保你的操作系统安装了 Java 环境,安装 JRE(Java Runtime Environment)或 JDK(Java Development Kit)均可。如果已安装可忽略此步骤,否则可在以下链接中任选其一下载安装。若非以 Java 开发为目的,推荐安装体积更小的 JRE。
-
下载 JRE:https://fere.link/nlfkff
-
下载 JDK(Standard Edition):https://fere.link/jotkto
-
下载 OpenJDK:https://fere.link/iavwwt
* 提示:如果你使用的 Sigil 版本号小于 0.9.0,还需要确保你的操作系统安装了 Python 环境 https://fere.link/hbqqpi。
插件的使用方法很简单,用 Sigil 打开 EPUB 文件后,依次点击 Sigil 的菜单【Plugins → Validation → EpubCheck】,稍等片刻,就可以查看当前 EPUB 文件都存在哪些不符合规范的地方。你可以对可能对推送到 Kindle 个人文档产生影响的地方进行修改,保存后进行推送测试即可。
--------- · END · ---------
【推广】书摘服务:memo.bookfere.com
「书伴」为静心阅读而生