如何修改 Kindle 原生系统的页面边距(需越狱)
本文提供的方法不适用版本号大于 5.11.x 的新版本 Kindle 固件。
为了使用户在阅读时能取得视觉上的均衡,和纸质书一样,Kindle 设备在显示电子书时,也在内容四周填充了边距(Margins),并且允许用户通过页面设置功能调节左右边距的大小。但是即便选择了最小边距,电子书内容也不会贴边,这是因为 Kindle 在系统级别保留了一部分边距,无法通过设置调整。
相当长一段时间以来,书伴留意到有很多小伙伴抱怨 Kindle 预留的边距过大浪费空间。由于原生系统没有提供相关设置项,想要修改边距就得通过修改 Kindle 系统文件来达到目的,大概的思路为:先把含有页面边距参数的配置文件从系统中复制出来,然后修改其中的相关参数,最后替换原文件。
▲ Kindle 页面边距调整前后对比
该方法源自网友“gygz”在 HiPDA 论坛发布的帖子(感谢书伴交流群中小伙伴“Damon”的推荐),原帖称适用于 KPW 1/2/3、KV,理论上也适用于 KO 1/2 和 KPW4。书伴用已越狱的 KPW3 验证了原帖步骤,并在本文中对其做了简化,以方便小伙伴们用最少的步骤达到修改 Kindle 页面边距的目的。
目录
在开始以下步骤前,请确保你的 Kindle 已越狱并安装了 MRPI 和 KUAL 两个插件。本文同时适用于 Windows 系统和 macOS 系统,在阅读时请留意本文对两个系统操作有差异的地方所做的说明。
一、准备相关工具
以下是本文中的步骤所需要用到的全部工具,请全部下载下来备用:
- Change Margins 插件下载:百度网盘〈提取码 :
ax4d
〉 - Java Bytecode Editor 下载:百度网盘〈提取码 :
8vvk
| 解压密码 :bookfere
〉 - Sublime Text 下载:官网下载(可选。可用任意代码或文本编辑器)
为了简化步骤,书伴将可自动化的操作都写进了 KUAL 插件 Change Margins 里,请下载 change-margins.zip 并解压缩,把 change-margins 插件文件夹拷贝到 Kindle 根目录的 extensions 文件夹中。
Kindle 页面边距配置参数存放在 Java 压缩包 ReaderSDK-impl-zh.jar 的 Java 类文件 ReaderResources_zh.class 中,而修改这个文件我们需要用到名为 Java Bytecode Editor 的工具。
由于需要修改的代码较长,在 Java Bytecode Editor 中不好查找定位,所以建议把代码复制到代码编辑器中进行修改,改好之后再复制回去保存。你可以选用包括 Sublime Text 在内的任意代码编辑器。
二、提取配置文件
不同的系统语言所对应的含有配置文件的 .jar 文件不同,它们在 Kindle 系统中的对应关系如下:
/opt/amazon/ebook/lib/ReaderSDK-impl-zh.jar (Chinese)
/opt/amazon/ebook/lib/ReaderSDK-impl-en_GB.jar (English)
/opt/amazon/ebook/lib/ReaderSDK-impl-de.jar (Germany)
/opt/amazon/ebook/lib/ReaderSDK-impl-es.jar (Spain)
/opt/amazon/ebook/lib/ReaderSDK-impl-fr.jar (France)
/opt/amazon/ebook/lib/ReaderSDK-impl-it.jar (Italy)
/opt/amazon/ebook/lib/ReaderSDK-impl-ja.jar (Japan)
/opt/amazon/ebook/lib/ReaderSDK-impl-nl.jar (Netherlands)
/opt/amazon/ebook/lib/ReaderSDK-impl-pt.jar (Portugal)
/opt/amazon/ebook/lib/ReaderSDK-impl-ru.jar (Russian Federation)
/opt/amazon/ebook/lib/ReaderSDK-impl-sq.jar (Albanian)
你无须关心这些细节,KUAL 插件 Change Margins 会帮你自动提取配置文件,你只需要打开 KUAL,点击菜单中的【Change Margins】→【Get Config File】,插件就会把与当前系统语言相对应的 .jar 包提取到 Kindle 的根目录下名为 margins-config-temp 的文件夹中。
▲ Change Margins 辅助修改页面边距界面
以中文系统语言为例,所需要修改的配置文件 ReaderResources_zh.class 会被存放到如下路径:
margins-config-temp-zh/com/amazon/ebook/booklet/reader/resources/ReaderResources_zh.class
* 提示:如果你想要修改与其它语言相对应的配置文件,请点击菜单中的【Change Margins】→ 【Select Language】选择目标语言,然后再点击【Get Config File】提取一次即可。
三、修改配置文件
用 USB 数据线将 Kindle 设备连到电脑上,确认可以找到文件 ReaderResources_zh.class,然后按照下面的步骤,使用工具 Java Bytecode Editor 手动对其进行修改。
将下载到的 jbe_mt.zip 解压缩并进入 jbe_mt 目录。Windows 系统双击 jbe.bat 启动软件;macOS 系统打开“终端”,把解压得到的文件夹拖到终端按回车,然后输入 ./jbe.sh
按回车启动。
点击软件左上角“带放大镜的图标”,选择并打开提取到 Kindle 中的文件 ReaderResources_zh.class。如下图所示,在左栏依次展开 “Methods → <init>” 选中 “[0] Code”,然后点击右侧【Code Editor】标签。把下方代码框全选并剪贴到代码编辑器中,Java Bytecode Editor 保持清空状态备用。
在代码编辑器中,我们需要依次修改下面列出的参数(请从代码顶部依次向下搜索替换)。为了方便显示,以下示例代码省略了不相关的信息,只显示了要修改的参数,带删除线的是修改前的数值。注意,可能不同的 Kindle 设备或固件版本显示的参数名不太一样,但应该都带有 ldc 字样(如 ldc_w)。
* 提示:这些修改的数值系原帖提供,但是不太清楚变动依据是什么,虽然原帖提了一句:6 寸 300PPI 可用 0.4245 的倍数进行调整,但还是太明白其中含义,如果有小伙伴知道是如何换算还请留言指点。
① 搜索:font.wordsperline.margin.list
(约 5818 行)
ldc_w "font.wordsperline.margin.list"
...
ldc 50.94
ldc 8.94
...
ldc 33.96
ldc 6.38
...
ldc 16.98
ldc 3.396
...
② 搜索:reader.progressbar.footer.height
(约 7167 行)
ldc_w "reader.progressbar.footer.height"
...
ldc 13.58
ldc 8.49
...
③ 搜索:reader.progressbar.margin
(约 7218 行)
ldc_w "reader.progressbar.margin"
...
ldc 13.58
ldc 8.49
...
④ 搜索:reader.progressbar.footer.height
(约 7364 行)
ldc_w "reader.progressbar.footer.height"
...
ldc 13.58
ldc 8.49
...
⑤ 搜索:reader.progressbar.margin
(约 7398 行)
ldc_w "reader.progressbar.margin"
...
ldc 13.58
ldc 8.49
...
⑥ 搜索:reader.content.topMargin
(约 7724 行)
ldc_w "reader.content.topMargin"
...
ldc 13.58
ldc 6.7925
...
⑦ 搜索:reader.content.bottomMargin
(约 7758 行)
ldc_w "reader.content.bottomMargin"
...
ldc 13.58
ldc 5.5185
...
以上所有参数修改完毕后,全选代码,复制并粘贴到之前已清空备用的 Java Bytecode Editor 编辑框中,然后点击【Save method】按钮保存一下文件。至此 ReaderResources_zh.class 就修改完成了。
四、打包配置文件
最后我们需要把 margins-config-temp-zh 文件夹中的两个文件夹重打包成 ZIP 文件,具体步骤如下:
- Windows 系统:进入 margins-config-temp-zh 文件夹,同时选中 com 和 META-INF 两个文件夹,点击鼠标右键,在弹出的菜单中点选“发送到 → 压缩(zipped)文件夹”,然后重命名为 a.zip。
- macOS 系统:margins-config-temp-zh 文件夹,同时选中 com 和 META-INF 两个文件夹,点击鼠标右键,在弹出的菜单中点选“压缩 2 项”,然后重命名为 a.zip。
* 提示:为方便操作,你只需要将两个文件夹打包成 zip 文件并重命名为 a.zip 即可,在接下来的步骤中,插件会自动把文件重命名为 ReaderSDK-impl-zh.jar 并替换到系统相应的路径中。
以上操作完成后即可断开 Kindle 的 USB 连接。在 Kindle 中打开 KUAL 继续以下步骤。
五、替换配置文件
打开 KUAL,点击菜单中的【Change Margins】→【Replace Config File】,插件会自动备份系统的原配置文件,并替换成你修改好的配置文件,接着 Kindle 会自动重启。
* 提示:如果今后你想要还原系统的原页面边距配置文件,只需要点击插件中的【Restore Config File】即可,插件会自动删除替换的文件,并还原系统的原配置文件(还原操作也会重启 Kindle)。另外,如果你不再需要提取到 Kindle 根目录的配置文件,可以点击【Delete Config File】删掉它。
六、查看修改效果
Kindle 重启完毕后,修改的配置还未完全生效,你需要打开一本书,点屏幕上方调出控制条,然后依次点击“页面显示 → 字体和页面设置 → 页面设置”,来回切换一下“页面边距”,即可让修改的配置生效。
以上是通过修改系统文件更改页面边距的全部步骤。辅助修改页面边距的 KUAL 插件目前仅在 KPW3 设备上测试过,如遇到不可用的情况欢迎留言反馈。对于本文可能存在的谬误也欢迎留言指正。
© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/746.html
延伸阅读
- Kindle 推送小技巧:“网易闪电邮”右键推送电子书
- [每周一书]《利维坦》霍布斯的自然法和社会契约
- Kindle Voyage 阅读器深度评测(三):硬件参数
- [每周一书]《贫穷的本质》我们为什么摆脱不了贫穷?
- 全新亚马逊 Kindle Oasis 上手评测视频总汇
- [每周一书]《WHAT IF》那些古怪又让人忧心的问题
- [2018.04.19] Kindle X 咪咕版固件升级至 5.7.2.2
- [2021.10.08] Kindle 阅读器固件升级至 5.14.1
- 亚马逊 Kindle 与纸书:界限的存在与虚无
- ABBYY FineReader:把扫描版 PDF 转换成文本
- Sherry推荐图书(二十三)—— 培养法律思维
- Kindle 特制固件越狱教程:适用部分固件版本
- [2019.02.15] Kindle 阅读器固件升级至 5.10.3
- [每周一书] 米歇尔·奥巴马自传《成为》
- Sherry推荐图书(二十二)—— 小镇故事
KPW3 5.11.2很完美
感谢教程和评论里面的经验
1.修改软件需要安装java环境,打开就闪退的原因
2.KWP3 5.10.3 修改后时钟会被盖住一点,参考评论方法,修改的第6.7项对下上下边距
3.美中不足:
只有打开文件后,手动切换页边距后才生效,退出文件再打开还要再去设置一遍……
高版本固件,发现有人改了上下有效,左右无效,有人说第一项改的是第二次出现的?
待验证…………
5.11.2按照教程弄好了,不过每次翻页都会还原,要手动点边距,才能生效,
在kindle4/5时,是可以修改read.pref文件改变页边距。在高版本固件中,read.pref文件放到 var/local/java/prefs目录中,而且是二进制格式,有大神能出手的话,应该很容易实现吧。
在https://www.mobileread.com/论坛的较早的帖子中,有人尝试修改kindle touch成功过。
更正下:是reader.pref文件。
Kindle 最可恶的就是留太多页边距,KO2 甚至还加一个黑框,黑框内外都留页边距,太坏了。花大价钱买了一个大点的屏幕,但显示效果任然是小屏幕,看扫描 pdf 文件太费力。现在推出的 Kindle Scribe,具网友称由于页边距太大,实际可视界面改善有限(页边距因为在外围,所以实际空白面积占比相当高),所以不会再购买 Kindle,除非能越狱。我的 KO2 是被它自动关闭飞行模式后自动升级的,现在无法越狱了。说明 Kindle 留有一些不为人知的后门。
在calibre中编辑书籍,在.css中的末尾添加
可以改变单本书的页边距
KO2应该设置多少哦?改到-15了还是没有什么效果
这个好,可以在calibre 首选项 转换 通用选项 界面外观 样式 额外的CSS中加上这内容,以后下载到的书转换成其他格式都会把左右页边距设置得刚刚好
KV5.13.6越狱后,用旧版BookFere Tools能顺利提取出配置文件,但按此方法修改ReaderResources_zh.class后,上下边距有效果,而且可以根据情况自己设置参数(修改参数第6项为上边距,第7项为下边距),而左右边距修改了各项参数试了好多次都没有效果(试过文中提供的数值,也尝试过其他数值都不行),不知道是不是固件版本的原因,望高人指点!
我也遇到了一样的问题,后来把固件降级到5.10.2,再通过change-margins修改就可以了。
说说我的修改经历,KPW3前几天越狱后,由于讨厌新版本的界面,就降级到了5.9.6.1,5.9.6.1越狱后,用那个单独的(KUAL插件Change Margins)提取不到任何东西,用评论区那个旧版的插件,只能生成一个空的margins-config-temp-zh文件夹,也是提取不到东西,然后看到提取配置文件的对应关系如下:/opt/amazon/ebook/lib/ReaderSDK-impl-zh.jar (Chinese),就想,能不能手动把这个文件提取出来,修改完在放回去,先试了那个插件(File Browser:便捷地管理 Kindle 中的文件),连接后,发现找不到opt文件夹,于是换用(USBNetwork Hack 安装教程:无线管理 Kindle),用USBNetwork连接后,顺利找到ReaderSDK-impl-zh.jar (Chinese)文件,复制出来,用7-zip直接解压,按文中的方法用Java Bytecode Editor修改ReaderResources_zh.class并保存,在把之前解压的文件改回ReaderSDK-impl-zh.jar,本来以为把修改后的在替换回去就行了,可是usbnetwork提示不能写入。。替换不了。就想到了文中看到的(四、打包配置文件和五、替换配置文件),就想试试这个。把之前解压并修改的2个文件打包zip并改名为a.zip并放到margins-config-temp-zh文件夹后(如果没有这个文件夹,就新建一个同名的),然后打开KUAL,点击菜单中的【Change Margins】→【Replace Config File】,点击后接着kindle就重启了,重启后,打开多本电子书测试当前页面,快速翻页,跳章节等,发现页边距都改变了,也就是修改成功了。
kpw3降级到了5.9.7 不是新版本了 为啥【Change Margins】→【Get Config File】之后,什么目录都没有产生。 用评论里面的整合版本,只能出现一个空目录。评论区的runme.sh测试了,也什么都没反应。求助啊
kv5.12.2改了有效果,但一翻页又改回去了,有解决办法吗
请补一下旧版BookFere Tools(就是带Change Margins功能的那个版本),本来想直接找到这个文件做修改,检索不出来,系统版本比较老,是5.10.3,想试试能不能调节边距
把 Change Margins 单独提取出来了,请重新下载使用。
插件没能提取到任何文件,型号是kindle voyage,固件版本为5.10.3,应该是提取到kindle根目录的一个名叫margins-config-temp-zh.jar的文件没错吧?
遇到相同的问题,原来整合版的可以,单独版啥也提取不出来。
遇到同样的问题
已经使用您提供在评论区的runme.sh测试了,能够获取到.jar的列表:
/opt/amazon/ebook/lib/ReaderSDK-impl-de.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-en_GB.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-es.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-fr.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-it.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-ja.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-nl.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-pt.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-ru.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-sq.jar
/opt/amazon/ebook/lib/ReaderSDK-impl-zh.jar
/opt/amazon/ebook/lib/ReaderSDK-impl.jar
链接: https://pan.baidu.com/s/1RCe9eel6WH0WUhibt6_R_A?pwd=e6eq 提取码: e6eq 复制这段内容后打开百度网盘手机App,操作更方便哦
感谢分享的旧版插件,解决问题!有看到评论的书友可以尝试上面热心朋友分享的插件版本,可以提取出来
已失效,可以重发吗,谢谢
现在书伴工具没有提取配置文件功能了,是因为方法失效了吗?
是的,对新版本固件没有效果了。
不知道KPW2里如何修改啊?我用这个文章的办法改了很多次,调整了各种参数,还是失败了。
这里介绍一下linux系统下如何使用JBE(Java Bytecode Editor)
首先,拥文本编辑器(如nano、vim、kate、vscode等等)打开文件夹下的jbe.sh文件
然后,修改为如下代码
“`
#! /bin/bash
cd ./bin
java ee/ioc/cs/jbe/browser/BrowserApplication &
“`
之后,先用cd指令,定位到Java Bytecode Editor程序所在文件夹
确认以及给予jbe.sh文件执行权限,然后双击本文件,即可运行。
arch系的发行版可以直接去aur下载使用,包名:java-bytecode-editor
ava Bytecode Editor 我的电脑一直打不开,闪退,网上找了很多,没有找到解决办法,怎么破??
kpw3,5.13.3,没有效果。