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

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

2022-07-01 举报

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

本文会用到 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 元素有误

用 Sigil 打开 EPUB 文件,检查其 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 文件后推送仍存在问题,可以将样本发送到我们的邮箱 freesha1@126.com,以便我们进行测试并对本文进行补充。如果你有更好的解决方案或小技巧,也欢迎在本文下方留言分享。

好书推荐
竟陵王集
竟陵王集

南朝齐诗文别集。一名《萧竟陵集》。萧子良撰。萧子良字云英,齐武帝次子,封竟陵郡王。据《南齐书》本传,萧子良“所著内外文笔数十卷,虽无文采,多是劝诫”。《隋书·经籍志》著录《竟陵王子良集》40卷,两《唐书》著录《齐竟陵王集》30卷,宋代书目未见著录。宋时已佚。今有明张溥《汉魏六朝百三名家集》辑本二卷。《全上古三代秦汉三国六朝文》、《先秦汉魏晋南北朝诗》收录萧子良诗文较完备。

萧子良
李太白集
李太白集

诗文别集。唐李白作。白字太白,故名。白生前曾有魏颢为之编集二卷;后李阳冰编其遗著为十卷,名《草堂集》;唐元和十二年范传正编李白集为二十卷。以上三本均已早佚。今传三十卷本为北宋宋敏求所编,清缪曰芑重刻,计序言、碑记一卷,歌诗二十三卷,杂著六卷。又有宋咸淳刻本三十卷,计诗二十卷,文十卷,江苏广陵古籍刻印社1980年4月影印出版。此外历代均有李诗注本,校著者有宋杨齐贤集注、元萧士赟补注之《分类补注李太白诗》,后明郭云鹏就杨、萧原注本精简注文,附加文集,有《四部丛刊》影印本;有明胡震亨评注《李诗通》;清王琦《李太白诗集注》,该本参合诸本重编,并增附录六卷,较为详赡,中华书局曾加校补,于1977年排印再版;又今人瞿蜕园、朱金城有《李白集校注》,对王琦注本有所补正,上海古籍出版社1980年7月出版。

李白
可闲老人集
可闲老人集

诗别集。四卷。元张昱 (1289—1371)撰。昱字光弼,自号一笑居士。庐陵 (今江西吉安)人。累官至江浙行省左右司员外郎、行枢密院判官。元末弃官。明初太祖征其入京,召见,悯甚老,曰 “可闲矣”,厚赐遣归,于是更号可闲老人,放浪山水间。其诗出于虞集,具有典型。多已散佚。明正统元年(1436)杨士奇搜得残稿,为之作序,令浮梁县丞时昌刻之。此本即从正统刻本传写而来,士奇原序尚载于卷端。今存《四库全书》本。

张昱
五百家注昌黎文集
五百家注昌黎文集

韩愈撰魏仲举编宋魏仲举编。仲举,建安人。书前题庆元六年刻於家塾。实当时坊本也。首列评论、诂训、音释诸儒名氏一篇,自唐燕山刘氏,迄颍人王氏共一百四十八家。又附以新添集注五十家、补注五十家、广注五十家、释事二十家、补音二十家、协音十家、正误二十家、考异十家,统计祗三百六十八家,不足五百之数。而所云新添诸家,皆不著名氏。大抵虚构其目,务以炫博,非实有其书。即所列一百四十八家如皇甫湜、孟郊、张籍等,皆同时倡和之人。刘眗、宋祁、范祖禹等,亦仅撰述《唐史》。均未尝诠释文集。乃引其片语,即列为一家,亦殊牵合。盖与所刊五百家注柳集均一书肆之习气。集四十卷,内诗十卷;外集遗文十卷,内诗十八篇。今合编为十卷。

韩愈
孙廷尉集
孙廷尉集

诗文集 东晋孙绰(314—371)撰。一卷。绰字兴公,太原中都(今山西平遥)人。文学家。居家会稽,初历著作佐郎,迁征西参军,太学博士,永嘉太守,累廷尉卿。少爱隐居,放游山水,博学善属文,名冠当时,为玄言诗代表作家。《诗品》说他“弥善恬淡之词”。以《秋日》诗有名。《隋书·经籍志》著录《孙绰集》15卷并说明“梁二十五卷”。两《唐书》著录也是15卷。宋代书目未见著录。今存明人辑本,有张燮《七十二家集》本《孙廷尉集》2卷、张溥《汉魏六朝百三名家集》本《孙廷尉集》1卷。

孙绰
可通过以下方式联系我们