张津瑜厕所门事件 8分钟视频9分52秒流出

【少儿禁】马建《亮出你的舌苔或空空荡荡》

母子乱伦:和儿子做了,我该怎么办?

快消管培生补招|世界500强雀巢惠氏招聘客户发展管培生!简历直投HR邮箱,一周内回复

除了坚决支持,不知道如何表达。

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

推送 EPUB 格式电子书到 Kindle 的常见问题解决方法

书伴BookFere 书伴BookFere 2022-09-11

书伴之前发布了一篇文章《如何快速无损修复推送失败的 EPUB 格式电子书文件》,文中提供的修复方法可解决大部分推送 EPUB 文件后收到亚马逊系统退信的问题。但是此方法并不能覆盖所有问题,随着小伙伴不断向书伴提供样本文件,更多推送 EPUB 文件相关的问题得以显现。

本文根据小伙伴们提供的样本文件汇总了一些具有代表性的问题,并为每个问题提供了相应的解决方法。这些问题被分成了两大类,分别是“导致推送失败的问题”和“导致内容有误的问题”。前者主要解决推送不可达的问题,后者主要解决虽推送成功内容却存在可读性问题的问题。

本文会用到 Sigil 这款软件,如果其它软件(如 Calibre)有同等功能也可以作为替代。

一、导致推送失败的问题

推送失败是指无法将 EPUB 文件成功推送到 Kindle,通常你会收到亚马逊的一封题为“您发送到 Kindle 的文档有问题”的退信,内容除了一个格式支持列表,未提供对解决问题有价值的信息。

一个 EPUB 文件可能同时存在下面这些问题,你可以在推送失败使逐一排查和修复。

1、EPUB 中的某些文件不符合规范

亚马逊的个人文档服务对推送的 EPUB 文件有较强的容错机制,即便有些内容不符合 EPUB 规范,一般情况下也能被正常处理,但是唯独对 EPUB 2.0 的导航控制文件 toc.ncx 及 EPUB 3.0 的导航文档 nav.xhtml 比较敏感,如果这两个文件存在“错误”,就会大概率导致推送失败。

这是导致 EPUB 推送失败最常见的问题,也是首先要尝试解决的问题。具体解决方法如下:

用 Sigil 打开 EPUB 文件,依次点击菜单【工具(Tools)目录(Table Of Contents)生成目录…(Generate Table Of Contents…)】(或使用快捷键【Command + T】。

最后点击左上角的软盘图标按钮(或按快捷键【Command + S】)保存修改后的文件。

关于此问题的详细解释可参考《如何快速无损修复推送失败的 EPUB 格式电子书文件》一文。

2、HTML 文件名含空格和中文字符

如果 EPUB 文件被插入了广告页面,且文件名带有空格和中文字符,也会导致推送失败。解决方法是,用 Sigil 打开 EPUB 文件,直接将带空格和中文字符的 HTML 页面删掉再保存即可。

3、HTML 文件中的 body 标签含 ID

在 EPUB 文件的 toc.ncx 文件中,有些 <content> 元素的 src 属性值所指向的 HTML 文件路径含有 URL 片段,即类似路径 text/part0000.html#test_1 中的 #test_1,如果其对应的 id 属性在 <body> 元素上,可能会导致推送失败。解决方法是,将 <body> 元素上对应的 id 值移至其子元素中,或直接删除路径中片段部分(即 # 和其后的字符)。

最后点击左上角的软盘图标按钮(或按快捷键【Command + S】)保存修改后的文件。

4、OPF 文件中的 language 元素有误

检查 OPF 文件(通常是 content.opf)元数据中的 <language> 元素,如果该元素缺失,或者其内容部分未指定会语言代码,或指定了错误的代码(如下所示)都会导致推送失败。

<dc:language>und</dc:language>


解决方法为用 Sigil 编辑 OPF 文件,如果发现缺失 <language> 元素,则在 <metadata> 元素中添加如下所示的代码,注意语言代码以实际为准。
如果 <language> 元素中的语言代码有误,则改成有效的语言代码,如中文的 zh,英文的 en,更多请参考 ISO 639-1 语言代码列表。

<dc:language>zh</dc:language>


你也可以通过 Sigil 的菜单添加或修改语言元素。
首先点击【工具(Tools)元数据编辑器…(Metadata Editor…)】调出元数据编辑界面。如果缺失 <language> 元素,可点击【添加元数据(Add Metadata)】按钮,选择“语言(Language)”,点击【OK】按钮后再选择“中文 – 中国(Chinese – China)”,点击两次【OK】按钮完成添加。注意不要重复添加。

如果 <language> 元素中的语言代码有误,双击“语言(Language)”的“值(Value)”相应的字段,选择“中文 – 中国(Chinese – China)”,点击【OK】按钮完成修改。

最后点击左上角的软盘图标按钮(或按快捷键【Command + S】)保存修改后的文件。

二、导致内容有误的问题

有时 EPUB 文件即便是推送成功,其内容也存在可读性问题,如乱码、目录层级有误等。

1、电子书内容出现乱码

一般这是因为 EPUB 文件中的 HTML 文件没有指定 UTF8 编码导致的。解决方法也很简单,用 Sigil 打开 EPUB 文件,依次点击菜单【工具(Tools)HTML 重新格式化(Reformat HTML)改进所有 HTML 文件(Mend All HTML Files)】,让 Sigil 自动修补所有 HTML 文件,最后保存再推送就可以了。

2、电子书目录层级有误

如果 Sigil 的生成目录功能破坏了目录层级,你可以用 Sigil 的目录编辑功能【Tools(工具)目录(Table Of Contents)编辑目录…(Edit Table Of Contents…)】调整一下。

  • 通过键盘上的上下方向键(或通过鼠标点击)可选中标题;

  • 按住 Ctrl 键加上下方向键调整标题的顺序(也可以点击界面右侧的上下方向按钮);

  • 左右方向键调整标题的缩进(也可以点击界面右侧的左右方向按钮);

  • 编辑完成后点击【OK】 按钮保存即可。


最后点击左上角的软盘图标按钮(或按快捷键【Command + S】)保存修改后的文件。

由于受限于 EPUB 文件样本数量,以上这些问题无法覆盖所有情况,如果你使用以上方法修复 EPUB 文件后推送仍存在问题,可以将样本发送到书伴邮箱,以便书伴进行测试并对本文进行补充。如果你有更好的解决方案或小技巧,也欢迎在本文下方留言分享。

--------- · END · ---------


【推广】书摘服务:memo.bookfere.com


微信ID:kindle-fere
 「书伴」你的电子书伴侣

文章有问题?点此查看未经处理的缓存