KindleGen:亚马逊官方 Kindle 电子书格式转换工具
KindleGen 是亚马逊官方提供的电子书格式转换工具,可以将 EPUB、HTML 等格式转换成适用于 Kindle 的 MOBI 格式。亚马逊提供的另一款软件 Kindle Previewer 也带有电子书格式转换功能,其内部也是调用 KindleGen 进行转换的。
KindleGen 支持将 EPUB、HTML、XHTML 格式转换成 MOBI 格式。与 Calibre 等第三方电子书格式转换工具相比,KindleGen 具备显著的优势,不仅可以避免破坏电子书原有的排版,如行距变小、内嵌字体丢失等,由于是官方出品,与 Kindle 设备的兼容性也是最佳的。
一、KindleGen 软件下载
KindleGen 是一款跨平台软件,请下根据自己所使用操作系统选择相应的版本下载:
https://bookfere.com/tools#KindleGen
现在亚马逊官方已停止提供 KindleGen 的下载,你也可以从 Kindle Previewer 软件中提取最新版 KindleGen,目前 macOS 版有 64 位程序,windows 版只有 32 位程序。
二、KindleGen 安装方法
KindleGen 是单文件命令行工具,因此不需要安装,但是为了方便在“终端”或“命令提示符”使用它,建议将其放在适当的位置,并添加到系统环境变量。下面是针对不同操作系统的操作方式:
● Windows 系统
KindleGen 是单文件程序,可直接在“命令提示符”中输入 KindleGen 的绝对路径运行它:
- 下载 KindleGen 并解压缩,取出里面的 kindlegen.exe,放到某个位置,如
C:\KindleGen\kindlegen.exe
。 - 依次点击【开始菜单 → 所有程序 → 附件 → 命令提示符】打开“命令提示符”。
- 在“命令提示符”上输入命令
C:\KindleGen\kindlegen.exe
并回车,将会看到 KindleGen 的帮助内容。
如果你不想要每次都输入长长的绝对路径来运行 KindleGen,可以按照如下步骤将其加入系统的环境变量,这样就可以直接在“命令提示符”中直接输入命令 kindlegen
运行它了:
- 鼠标右键点击“计算机”(或“我的电脑”),然后在弹出的菜单中点击“属性”;
- 接着点击弹出窗口左侧的“高级系统设置”,在弹出的窗口中再点击【环境变量…】;
- 在“系统变量”这一栏找到“变量”为“Path”这一项并双击它,在弹出的窗口中点击【新建(N)】,输入 kindlegen.exe 所在目录,如
C:\KindleGen
,最后一路确定就可以了。
● macOS 系统
和 Windows 系统一样,你可以直接在“命令提示符”中输入 KindleGen 的绝对路径运行它:
- 下载 KindleGen 并解压缩,得到名为 kindlegen 的二进制文件;
- 在“应用程序”中找到并运行“终端”,运行命令
mkdir -p /usr/local/bin && open /usr/local/bin
打开自定义程序目录,并将二进制文件 kindlegen 拷贝到此目录中; - 在“终端”输入命令
/user/local/bin/kindlegen
并回车,将会看到 KindleGen 的帮助内容。
* 提示:如果在运行 kindlegen 命令时出现错误提示“permission denied”,可以运行命令 chmod +x /user/local/bin/kindlegen
为 KindleGen 程序添加执行权限。
如果你不想要每次都输入长长的绝对路径来运行 KindleGen,并且使用的是较新版本的 macOS 系统(大于等于 10.15),一般可以直接输入命令 kindlegen
运行它。如果出现提示 zsh: command not found: ddd
,则需要执行如下命令将 KindleGen 程序所在的路径添加到系统的环境变量:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc
如果你使用的 macOS 版本低于 10.15,则需要运行如下命令添加:
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile
● Linux 系统
- 下载 KindleGen 至一个文件夹,例如用户主目录
/home/YOURNAME
(YOURNAME 要换成真实的系统用户名); - 在终端中使用命令
cd ~
进入下载文件所在的用户主目录,然后使用命令tar xvfz kindlegen_linux_2.6_i386_v2_9.tar.gz
解压文件; - 然后运行命令
cp kindlegen_linux_2.6_i386_v2_9/kindlegen /usr/local/bin
将二进制文件拷贝到自定义可执行程序目录,这样就可以直接在终端中运行 kindlegen 命令了; - 在“终端”输入命令
kindlegen
并回车,将会显示 KindleGen 的帮助内容。
在命令提示符或终端运行 kindlegen
命令,可查看其帮助内容:
*************************************************************
Amazon kindlegen(MAC OSX) V2.9 build 1028-0897292
命令行电子书制作软件
Copyright Amazon.com and its Affiliates 2014
*************************************************************
使用规则:
kindlegen [文件名.opf/.htm/.html/.epub/.zip 或目录] [-c0 或 -c1 或 c2] [-verbose] [-western] [-o <文件名>]
注释:
zip formats are supported for XMDF and FB2 sources
directory formats are supported for XMDF sources
选项:
-c0:不压缩
-c1:标准 DOC 压缩
-c2:Kindle huffdic 压缩
-o :指定输出文件名。输出文件将被创建在与输入文件一样的目录中。 不应该包含目录路径。
-verbose: 在电子书转换过程中提供更多信息
-western:强制创建 Windows-1252 电子书
-releasenotes:显示发行说明
-gif:转换为 GIF 格式的图像(书中没有 JPEG)
-locale : 以选定语言显示消息 ( To display messages in selected language )
en: 英语
de: 德语
fr: 法语
it: 意大利语
es: 西班牙语人
zh: 中文
ja: 日本
pt: 葡萄牙
ru: Russian
nl: Dutch
除了以上所列出的参数之外,KindleGen 还有一个隐藏参数:-dont_append_source
。该参数使得 kindlegen 在生成 mobi 时不再添加源文件到生成的 mobi 文件中,这样可以大大缩减 mobi 的体积,也就不再需要 kindlestrip 来帮助删除 mobi 文件的冗余成分了。具体命令如下所示:
$ kindlegen book.epub -dont_append_source
三、KindleGen 使用方法
KindleGen 是命令行工具,没有图形界面,你需要在“终端”或“命令提示符”中使用它。假设要转换的源文件 book.html 放在桌面上,可按照如下步骤要将其转换成 MOBI 格式。
macOS 或 Linux 系统可以通过如下命令进入待转换文件所在目录:
cd ~/Desktop
Windows 系统可以通过如下命令进入待转换文件所在目录(YOURNAME 替换成真实的系统用户名):
cd C:\Users\YOURNAME\Desktop
然后通过输入如下命令进行转换,注意要把 book.epub 换成实际要转换的电子书文件名(如果没有将 KindleGen 添加到系统环境变量,则需要如前文所说的那样,使用程序的绝对路径来运行它):
kindlegen book.epub -dont_append_source
如果转换成功,将会在被转换文件所在目录看到名为 book.mobi 的新文件。
© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/92.html
“转换电子书格式”相关阅读
- Kindle 漫画制作软件 ChainLP 简明教程
- 如何直接推送 EPUB 格式电子书到 Kindle 邮箱
- Calibre使用教程之为电子书添加或修改封面
- Calibre 使用教程之转换电子书格式
- EpubPress:把打开的多个网页转成一本电子书
- Calibre 使用教程之为电子书添加更换字体
- Calibre 使用教程之优化电子书的排版
- Calibre 常用命令行工具详解之 ebook-convert
- 在 Kindle 中阅读 EPUB 格式电子书的两种有效方法
- Kindle Comic Converter:最简单的漫画转换工具
- 乐书:在线 Kindle 电子书制作和转换工具
- EasyPub:把 TXT 文档转成带目录的 MOBI 格式
- 如何将 AZW3 格式无损转换为 MOBI 格式并保持原有排版
- 把 TXT 文档转换成带目录的 MOBI 格式电子书
- Calibre 使用教程之电子书繁体字转简体字
想问下有没有参数指定只生成kf8的?
用EasyPub可以指定,但是不能批量,那个东西应该也是用的kindlegen。不知道是否有这个么参数
用kindlegen默认生成的差不多是EasyPub的三倍,应该就是源文件,KF8,KF7三个了。用了-dont_append_source还有差不多两倍。
你好,我的电脑是win10系统的,安装了Kindle Previewer 3,但就是打不开,点图标没反应,到安装目录里点那个应用程序图标也没反应,是怎么回事呢?
站长,下载Calibre的时候,出现
Python funtion terminated unexpectedly DLL load
是怎么回事,是我的电脑系统不匹配,还是缺少什么插件之类的嘛
系统是什么版本?安装路径有没有中文字符?
请问 KindleGen 能批量转换么?
KindleGen 本身没有批量转换功能,需要配合批处理(Windows)或 Shell 脚本(macOS 或 Linux)实现批量处理功能。
你好,请问有批处理的脚本和教程嘛?找遍全网都没有
Windows 的批处理脚本比较简单,你可以打开文本文档,将下面的代码粘贴进去,另存为后缀为 .bat 的批处理文件(如 KindleGen.bat),然后下载 kindlegen.exe,放到与脚本相同的位置,再在相同的位置新建一个 ebooks 文件夹,把要转换的电子书放进去,最后双击运行 .bat 脚本就可以批量转换了。
我整理了以下的情況。發現各種方式轉換後的mobi檔都會存在「多頁數、卷數的書,有時無法回前頁」或是「無法執行查找功能」的問題。各情況整理如下:
情況一 :
我把epub檔,利用calibre轉換成mobi檔,輸出類型選old, 轉出的mobi檔在多卷數的書籍會發生無法回前頁的問題,但卻可選擇一個或一句文字並可執行標註,查字典,查找功能
情況二:
我把epub檔,利用calibre轉換成mobi檔,輸出類型選both, 轉出的mobi檔在多卷數的書籍不會發生無法回前頁的問題,也可選取一個字或一句文字,但無法執行查找功能。(可執行標註、查字典,無法執行查找功能)
情況三:
我把epub檔,利用calibre轉換成mobi檔,輸出類型選new, 轉出的mobi檔無法在kindle中開啟。
情況四:
我把epub檔,利用kindlegen v1.1版轉換成mobi檔,轉出的mobi檔在多卷數的書籍會發生無法回前頁的問題,但卻可選擇一個或一句文字並可執行標註,查字典,查找功能
情況五:
我把epub檔,利用kindlegen v2.9版轉換成mobi檔,轉出的mobi檔在多卷數的書籍不會發生無法回前頁的問題,也可選取一個字或一句文字,但無法執行查找功能。(可執行標註、查字典,無法執行查找功能)
請問您能否有一種轉換或解決方式,可以解決各種mobi格式的不同問題(無法回前頁,無法執行查找功能 ),產出一個不會有以上問題的mobi檔。
根据贴吧上的kindlegen批量转换教程:
http://tieba.baidu.com/p/2828689812
稍微改了一下bat文件,添加了-dont_append_source参数,批量转换时也不会添加源文件了。
拿17本狼辛测试了一下,无论是转换时间还是最终生成的mobi文件体积都减少约四成。
修改后的bat文件,链接:http://pan.baidu.com/s/1bpEIIOR 密码:g705
教程见原贴吧教程网址。
你好,请问可以在给我发一下吗?链接全部失效了,谢谢
解决方法参见此回复。
kindle Gen在Win10 可以用吗,而且官网链接和网盘都不能下载啊。官网说不支持中国下载··什么情况
阿七1928 您好。KindleGen 可以在 Win10 系统上使用。官网不提供中国区下载。如果网盘不能下载请提供具体的提示。
Kindle Previewer转换epub后的mobi 会有乱码 不知何解??(英文原版书)
公瑾同学 您好。如果出现乱码就说明是编码问题,请使用 Sigil 或 Calibre 编辑 epub 文件,看看 opf 文件中的
<metadata> ... </metadata>
代码块中有没有如下所示这行代码:<meta name="output encoding" content="utf-8" />
如果没有的话就加上去,保存,然后再用 Kindle Previewer 就不会出现乱码了。
站长你好,1.x 版本的 kindlegen for linux 还有地方能找到吗?
jad 您好。到目前为止还未找到。
你好,我在web archive上找到了
链接: https://pan.baidu.com/s/1eS4u02A 密码: pzky
感谢。请问能找到 1.1 版本的吗?
web archive 里应该找不到了,web archive 缓存时 1.2 版已经发布,1.1 的下载链接失效了。
好的,谢谢。
文中的——“转换示例:要转换一个名为 book.html 的文件,请进入书所在的目录文件,例如 cd desktop,然后输入 c:\KindleGen\kindlegen book.html。 如果转换成功,一个名为 book.mobi 的新文件将显示在桌面。”——这一个操作我实在是不明白啊,文件目录怎么输入啊?我把文件(如2.opf等)都放到软件目录里了,然后按着文章中的形式输入,结果显示没有找到2.opf……请问具体怎么做呢?谢谢
已经会使用了!
Chika 您好。请问您不明白的是什么呢?简单讲,一条命令包涵“执行程序”和“处理内容”,两者的路径都必须正确,任何一个没找到就说明输入错误。再详细点儿,比如执行程序是 KindleGen,而处理内容是 xxx.opf,如果其中 KindleGen 的路径是 C:\KindleGen\kindlegen,xxx.opf 文件的路径是 D:\mybook\xxx.opf。那么命令应该是下面这样的:
如果已经使用了cd 命令定位到了 D:\mybook 这个目录,就可以使用相对路径,命令可以这样写:
因为 KindleGen 是命令行工具,需要一点点命令行操作方面的知识,如果您不懂得如何使用,可以查找相关资料稍微了解一下。否则请使用更容易操作的 Kindle Previewer。
管理员这么仔细一说才明白了,刚才一直没输对,小白菜对于这种命令行形式真不大会,幸好我翻到下面看了一下评论!
好,我在用kindlepreviewer转换的时候老是会遇到错误无法完成转换,查看日志的时候发现报错信息是这样的:
Error(prcgen):E24010: Hyperlink not resolved in toc (One possible reason can be that the link points to a tag with style display:none):C:\Users\phzha\AppData\Local\Temp\mbp_7E0_7_E_F_39_3B_33A_4970_1F80_1\OEBPS\Text\part0000.xhtml#aid-1
Error(prcgen):E24001: The table of content could not be built.
请问该如何解决?
麻烦您了
张大鹏 您好。错误提示在创建目录的时候遇到链接错误。请检查下文件
part0000.xhtml
中有没有 #aid-1 这个锚点。或者指向的标签有无使用display:none
这个 CSS 属性。有指向aid-1 但是没有发现display:none这个属性
检查下指向的那个锚点是否存在,不存在就删掉。
表示不太懂这些语言。。该怎么检查啊。。
我可以把文件发给您看看吗
可以,可发送到页面底部的邮箱中。因为修改电子书需要一点点 HTML 和 CSS 知识,如果有必要建议参考相关资料稍微了解一下。
我用的是Mac,但是2.9版本并没有发现隐藏的dont_append_source的参数啊,显示“错误(kindlegen):E30010: 不受支持的自变量 -dont_append_source/”,是不是已经被砍掉了这个参数?还有会不会是我的操作失误?以前没用到“终端”这么高级的软件啊
希望有人能解答谢谢
leo vasilev 您好。2.9 版本的 KindleGen 是支持这个参数的。如果出现错误,请完整贴出您输入的命令。
嗯,那您看看是不是错了??
leodeMacBook-Pro:~ leovasilev$ /Users/leovasilev/Downloads/KindleGen_Mac_i386_v2_9/kindlegen -dont_append_source/Users/leovasilev/Downloads/Animal\ Farm\ -\ George\ Orwell.epub
参数在前在后都可以,你输入的命令问题是参数和路径之间没有空格。
试了下,果然这样啊,见教见教,谢谢了(^_^)
啊啊不好意思,我弄反了,参数是最后输入的,指导里面有说明,谢谢小编哪,麻烦了!!
我有一个译本、排版都非常好的《基督山伯爵》,epub格式,体积只有1.35M,就是下面这个链接:
http://pan.baidu.com/s/1bD7Ufs
用Calibre转换成MOBI格式后,注释功能完全失效。
用Calibre转换成azw3后(体积超过了40M),在我的kindle touch上卡到报错,在paperwhite3上倒是没有大问题,注释也正常可以点击(但是以链接的效果跳转到章节末尾处,而不是弹窗的形式)
又用了KindleGen转,这次在touch上终于能看了,注释也能用(同样的链接效果)。
但是字典功能又出了问题~每次都是弹出英汉字典,然后自然查无次词
最后又仔细看了下KindleGen的详细参数设定,发现有一个“-locale”参数,但是加上“-locale zh”转换成功后还是一样弹出英汉字典……
不知如何解决了,请高人指点
SACR 您好。KindleGen 中
-locale
这个参数的解释为“以选定语言显示消息 ( To display messages in selected language )”,而不是您所认为的改变电子书的语言。如果中文电子书弹出英文词典,可能是电子书在制作时语言指定成了英文,这个可以自己修改一下。解决思路为:先用 KindleUnpack 把电子书拆解成源文件,找到并编辑 content.opf 文件,在头部找到
<dc:Language>en</dc:Language>
这一行代码,把将里面的en
改成zh
,最后用 KindleGen 把 content.opf 转换成 mobi 文件即可。首先非常感谢如此详细的解答!
刚刚我也在贵站的另一篇帖子“查词时 Kindle 字典在中英文电子书中的不同表现”中看到了类似的问题:
https://bookfere.com/post/182.html
然后按照文中最后给出的解决办法在Calibre中修改了元数据并保存,但是在kindle中问题依旧
后来只好还是用了拆包的办法,发现拆包后包含了两个目录~一个mobi7和一个mobi8,Calibre只是把mobi7中的opf文件改成了zh,mobi8中的还是en。最后都改好重新打包后果然字典正常了!
看来Calibre不完善的地方还是有很多啊
Windows用户直接用鼠标把epub文档拖到kindlegen.exe程序上就可以完成转换,不用手工输入命令的。
亲测可用 谢谢!
5、请注意:我们建议您遵循这些步骤运行 KindleGen。 双击 KindleGen 图标不能打开此程序。运行上述命令时不带引号。 如果您将某个文件拖至 kindlegen 可执行文件,该工具将为您转换文件,但是您无法获得输出日志,因此,我们不推荐此操作。
站长,calibre将mobi转epub会损伤图片质量,请问这个软件可以无损转换吗
永恒 您好。损伤图片质量有验证过吗?印象中这个软件不会重新处理电子书中的图片。
是的,站长可以找一本高清Mobi漫画,然后将其转成epub之后解压,你会发现图片分辨率基本400*300多的水平,而一般高清最少会有一个1000*800
MAC版用Kindle Previewer打开EPUB后没有生成.MOBI文件,而是生成了一个converted-(原始文件名).EPUB的文件,请问是什么原因?
kindlegen 要好好宣传下,网络上大部分的 mobi 是用 calibre 转的,由于 calibre 转换的原理,存在很多问题:目录层级丢失、段落间隔很小、丢失50%的样式等。
kindlegen 可使用 -c1 或 -c2 压缩的方式,转换速度变慢,但文件可以小很多。
原版 kindlegen 转换后的 mobi 包含源文件, 可用 kindlestrip(是个python脚本)去除。下载链接 http://pan.baidu.com/wap/link?uk=3928744097&shareid=354238&third=0