将 azw3 格式转换为 mobi 格式并保持原有排版格式

小伙伴多次向 Kindle 伴侣提出一个问题,那就是通过 Calibre 将排版精美的 azw3 格式电子书转换成 mobi 格式后推送到 Kindle,排版格式会发生很大的变化,比如行距过窄、内嵌字体丢失等等。

这是因为 azw3 格式是 KF8 标准的 Kindle 电子书(也可以说是 mobi8 格式),由于支持丰富的 CSS 样式才有了丰富的排版效果。但是要是转换成老的 mobi7 格式,排版效果就会消失。比如用 Calibre 转换时,在转换面板的“MOBI 输出”选项里把“MOBI文件类型“选择了 old 就会转换成 mobi7 格式。

有没有方法避免这种情况呢?答案当然是肯定的。下面为小伙伴们提供了两种方法。

方法一:先拆解成源文件再重新转换

推荐首选这种方法。此方法的思路是,首先用 KindleUnpack 把 azw3 文件拆解成源文件,然后再用亚马逊官方的转换软件 KindleGen 把源文件转换成 mobi 格式。因为 KindleGen 这款转换软件是亚马逊官方提供的,所以生成的 mobi 文件排版和 azw3 是一模一样的。下面是具体步骤。

1、准备软件

KindleUnpack 下载:https://bookfere.com/tools#ku
Kindlegen 下载:https://bookfere.com/tools#KindleGen

2、拆解文件

如果您还不用使用 KindleUnpack,请先查看《KindleUnpack:拆解 Kindle 电子书文件的利器》这篇文章。使用此软件把 azw3 文件拆解成源文件,如下面路径所示,找到 content.opf 文件:

电子书名/mobi8/OEBPS/content.opf

* 注意,“电子书名”是指拆解的那本电子书的真实电子书名。

3、重新转换

最后使用 KindleGen 通过这个 content.opf 文件,重新生成 mobi 文件即可。具体步骤为:先把下载的 KindleGen 压缩包解压得到可执行文件放到桌面上,然后进行下面的操作:

  • Windows 系统用户可以把 content.opf 直接拖放到 kindlegen.exe 文件上即可完成转换。
  • Mac OS X 系统用户可以把 content.opf 直接拖放到下载的 UI 版 KindleGen 上即可完成转换。

转换完成后在 content.opf 所在的文件夹会生成一个名为 content.mobi 文件(可自行重命名一下)。

* 注意,使用 KindleGen 转换后的 mobi 文件会包含源文件,所以会比较大,如果介意,可以使用 KindleStrip 这个小软件将其处理一下,即可得到精简的 mobi 文件。

方法二:直接使用 Calibre 转换

通过实测发现,先用 Calibre 将 azw3 格式电子书转换成 epub 格式,然后再用 Kindlegen 把 epub 格式转换成 mobi 格式,这样一来,转换后的 mobi 格式电子书将原汁原味地保持原 azw3 格式的排版风格。OK,下面写一下详细的步骤。

1、准备软件

Calibre 下载:https://bookfere.com/tools#calibre

2、转换格式

1、安装并打开 Calibre,将 azw3 格式的电子书拖进 Calibre;
2、右键点击它,依次展开菜单“转换书籍” -> “逐个转换”(多本也可选择“批量转换”);
3、在弹出的窗口中将“输出格式”选择为“MOBI”,“MOBI 输出”中把“MOBI 文件类型”改为“both”;
4、点击【确定】等待转换完毕,得到的 mobi 文件可以保留和 azw3 格式几乎一致的排版。

* 注意,因为 Calibre 不是官方软件,转换出的 mobi 文件还是会改变一点点排版。

好啦,用以上两种方法转换的 mobi 文件就不用担心排版被弄乱了,是不是很简单。如果在过程中遇到任何问题请留言提出。另外如果您有更好的方法也请留言分享。

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。

小伙伴们发表了 103 条评论

  1. 您好,我遇到一个非常恼人的问题,希望能够得到您的帮助,具体问题如下:

    我按照文中所示的两种方法,都试过了,推送到kindle和手机app上都没有问题,kindle上的排版是正常的,但是推送到手机上的书打开后的行间距非常窄,而且亚马逊app自带的调整行间距的功能直接失效,导致在app上看书非常难受,请问有好的解决方法吗?
    注:我是把mobi格式的书进行排版并转化为azw3,并且再用kindlegen转换为mobi格式

    • 如果导致调整行间距的功能失效,一般是电子书的 CSS 强制设定行距导致的,建议用 Calibre 的编辑器检查一下电子书的 CSS 文件中,有没有类似 line-height 属性强制设定行距。

      • 感谢回复
        我的css文件确实设置了line height,这也是我本人自己使用calibre通过设置最小行高导致的,然而这正是我排版的目的,如果取消了这个设置固然能在手机上调整行间距,但是与我的初衷不符,我希望能够在手机端能够看到行间距排版良好的书本(话说为什么在kindle上就没问题呢?)
        另外您的回答给了我启发,我决定去看看排版优良的书本的css,另外期待您的再次解答。

  2. 把你们精品书库中的awz3格式,转换成mobi,推送kindle中为什么就没有封面?calibre中显示封面正常,但是kindle里不显示封面,请问这个怎么弄呢?

    • 首先你把 AZW3 文件拷贝到 Kindle 看看能不能显示封面,如果显示就说明这本书的封面没问题。然后排查,你使用什么转换成 MOBI 格式的,如果使用的是 Calibre,必须转换成老的 mobi7 标准的 MOBI 格式(也就是转换时“MOBI 输出”的“Kindle选项”选择的“MOBI文件类型”是“old”),这样推送后才能显示封面;如果使用的是 2.* 版本的 KindleGen 转换的,是新的 KF8 格式,推送后是不显示封面的。

      如果 MOBI 文件标准没问题,还需要注意,Kindle 显示封面有时候很慢,可以尝试重启一下设备,多等等看,或者多用几本电子书测试一下。

  3. Calibre的转换日版书的效果并不理想,我之前都是用Calibre转成Epub再用kindlegen。但是Calibre转出来的Epub不能直接转mobi,kindlegen会报错,所以还得拆开包找错误。

  4. 请问使用方法一转换的mobi文件,通过邮箱推送到kindle是不是不会显示封面?

    • 笑沧海 您好。KF8 标准的电子书直接拷贝到 Kindle 中即可显示封面,mobi7 需要用邮件推送到 Kindle 或用 Calibre 传输到 Kindle 才显示封面。

      • 原来如此!我基本上都是邮箱推送,这样可以保存进度,谢谢解答!

  5. 遇到这个错误提示了:
    错误:E20004:Spine 中的 ID 与 manifest 中的任何项均不匹配:x_cover.xhtml
    于是Kindlegen转换不成功