使用小屏幕Kindle阅读PDF文档时,如果文档不是专门为小屏幕阅读器排版,就会经常出现显示字体太小的情况,造成阅读不便。而Kindle的屏幕刷新率又太低,页面局部放大后再移动阅读区域亦不现实。解决这一问题目前常用的方法有以下三种:
而本文要介绍的Kindle上的阅读器Koreader采用图像分割再重排的方式处理PDF文档,这样不仅支持文字版PDF重排和数学公式的重排,还能对扫描版PDF和DJVU文档进行重新排版。 Koreader重排的原理后文有简单介绍。
Contents [hide]
Koreader是在GPLv3协议下开放源代码的Kindle阅读器,支持PDF, DJVU, EPUB, MOBI, TXT, XPS, CBZ, FB2, HTML, RTF, CHM, DOC, ZIP等几乎所有主流电子书文档格式。Koreader默认运行在Kindle原生系统里,只需要在原生系统中打开Koreader程序就可以使用,关闭Koreader程序就回到了原生系统界面,切换很方便。目前Koreader可以运行在Kindle Touch和Kindle Paperwhite设备上。Koreader对非触屏Kindle设备Kindle 2、Kindle DX(G)、Kindle 3、Kindle 4的支持会逐步加入,目前这些设备可使用老版本的Kindlepdfviewer或者Librerator。
Koreader的重排功能离不开另一个开源软件项目K2pdfopt(GPLV3协议发布)。K2pdfopt也是为了解决PDF文档在小屏幕Kindle上阅读的排版问题而开发的。与其它PDF预处理软件相比,它有很多独一无二的特性,比如自动化程度很高,能够自动识别多栏排版的文档进行分栏,自动去除页面白边,自动对扫描文档进行水平校正,以及最重要的基于图像分割的重排版算法。K2pdfopt使用完全基于图像处理的方法对文字重新排版,软件处理时会把原始PDF/DJVU页面放大再分割成以词为单位的像素区域,把这些像素区域重新排列到目标宽度的页面中(原理如下图),所以理论上只要能够读取文档的页面像素就可以对其中的文字进行重新排版。这个算法的前提是页面中的文字之间需要有一定的空隙,以提供分割像素区域的位点。
K2pdfopt被移植到Koreader以后就可以在阅读时让PDF重新排版。实时重排可以省去电脑上处理PDF的步骤,并且可以在kindle上交互式地微调排版参数,尽可能地生成满意的排版。使用Koreader的重排模式阅读时,软件会自动把当前页和下一页重排版成适应屏幕的尺寸。
以下是Koreader重排功能在Kindle上的使用效果截屏,包括重排前的原始页面与重排后的页面对比图。
下图是Koreader对多栏排版的PDF页面带图和带样式的重排效果:
左侧为重排前的原始页面,其中图像占据两栏的宽度,而重排之后图像仍然完整地显示,文字部分被重排为一栏显示。
对PDF页面中的数学公式重排支持是Koreader的关键特性,因为使用文字提取的重排版方式对公式这种复杂排版样式的支持并不好,而Koreader的版式识别算法却可以获得较好的重排效果:
左侧为重排前的原始页面,右侧是重排后的页面,字体放大了1.5倍仍然保持了公式的完整。
Koreader支持实体书扫描的PDF文档重排,重排效果如下:
左侧为重排前的扫描PDF页面,右侧是重排后的页面。
经过测试Koreader对大部分英文文档都可以获得很好的重排效果。而中文文档因为字间距太小,没有西文词之间的空格所以重排时应该选择较小的词间距。理论上只要中文字之间的间隔足够大,对中文文档也能获得很好的重排效果。这是对中文文档的重排测试(使用《红楼梦》脂评汇校本PDF文档):
左侧为重排前的PDF页面,右侧是重排后的页面。重排效果是字体样式全部保留,只增加了字体大小。
对中文竖排文档的重排(使用中华书局《点校本二十四史》扫描版PDF):
左上为重排前的原始页面,右上是重排使用的参数,使用了较小的字号、较小的词间距和90度旋转屏幕。下图是重排后的显示效果。
到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-x.xx.x.zip (x.xx.x对应版本号)。把下载的ZIP文件解压缩之后选择对应设备固件的升级文件,比如Kindle 3 WIFI 固件版本3.4的设备应该选择update_jailbreak_0.11.N_k3w_install.bin或者更新版文件,将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级。当出现升级成功的提示表示越狱成功。将Kindle连接到电脑上,在Kindle的根目录中会多出一个linkjail的目录。如果越狱不成功,很可能是因为设备已经越狱过,请忽略此步,直接尝试下一步。
安装前请先确认设备已经越狱。Launchpad是Kindle上的快捷键管理软件,用于启动Kindlepdfviewer程序。到MobileRead论坛的这个帖子 里下载launchpad的安装文件lpad-pkg-xxxx.zip (xxxx对应版本号)。 把下载的文件解压缩之后选择设备对应的安装文件,以Kindle 3 WIFI为例,应该选择 update_launchpad_0.0.1c_k3w_install.bin或者更新版文件,将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级。当出现升级成功的提示表示安装成功。将Kindle连接到电脑上,在Kindle的根目录中会多出一个launchpad的目录。
稳定版1KPV下载地址:https://kindlepdfviewer-package.googlecode.com/files/kindlepdfviewer-v2013.1.zip ,最新开发版KPV下载地址:https://code.google.com/p/kindlepdfviewer-package/downloads。在Kindle的根目录下创建customupdates目录(注意大小写),把下载的ZIP安装包拷贝到customupdates目录下,安装包不需要解压缩。断开Kindle和电脑的连接,在Kindle上按Shift-Shift-I安装Kindlepdfviewer,注意按键间隔不要超过0.7秒,如果按键生效屏幕左下角会出现^[Shift I]字样,等待安装程序完成屏幕左下角会出现Success提示。之后在Kindle上按Shift-Shift-空格三个键,会更新launchpad的快捷键列表把Kindlepdfviewer的快捷键添加进去。如果以上操作步骤都顺利完成,那么恭喜你已经安装成功。可以使用Shift-P-D按键序列打开Kindlepdfviewer。退出Kindlepdfviewer切换到原生系统请在文件管理器界面按Home键,查看更多使用说明请打开Kindlepdfviewer后按“H”键。
Librerator是KPV的一个修改版,安装方法与KPV相同。软件介绍和安装包下载地址: http://www.mobileread.com/forums/showthread.php?t=198742 。Librerator和KPV使用的启动快捷键序列不同所以二者可以互不影响地使用。
到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-k4-x.x.x.zip (x.x.x对应版本号)。把下载的ZIP文件解压缩之后,将data.tar.gz和ENABLE_DIAGS两个文件拷贝到Kindle磁盘的根目录中。断开Kindle和电脑的连接,通过Kindle的Menu > Settings > Menu > Restart重启机器进入诊断模式。使用五向键依次选择“D) Exit, Reboot or Disable Diags” 、”R) Reboot System”、”Q) To continue”。重启后主页会出现一本名为”You are Jailbroken”的书,说明越狱成功。
到Hi-pda论坛的这个帖子下载安装文件update_kite_0.0.1_install-k4.bin,并将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级安装。
到MobileRead论坛的这个帖子下载最新版Librerator。把下载的ZIP文件解压缩到Kindle磁盘根目录。
到这个地址下载最新的KPVBooklet安装包(KPVBooklet支持5.1.2及以上的Kindle固件,建议越狱后升级到5.3以上固件再安装)。将下载的kindle-kpvbooklet-*.zip文件解压缩,把update_kpvbooklet_x.x.x_install.bin文件拷贝到Kindle的磁盘根目录下,断开Kindle和电脑的USB连接。依次点击Kindle的主页按钮([Home] )> 菜单按钮([Menu] )> 设置选项(Settings )> 菜单按钮([Menu]) > 更新您的Kindle(Update Your Kindle)升级安装2,3,注意不要通过restart来安装。
到这个地址下载最新的Koreader安装包。将下载的koreader-kindle-arm-linux-gnueabi-*.zip文件解压缩后得到的两个目录(extensions和koreader)拷贝到Kindle磁盘根目录,断开Kindle和电脑的USB连接。在Kindle主界面即可直接用Koreader打开PDF和EPUB文档。
开启WIFI的情况下原生系统可能会在后台自动升级固件。不管手动固件升级还是自动固件升级都会擦除KPVBooklet启动器造成Koreader无法启动,解决这个问题只需要升级完成后重新安装KPVBooklet即可,Koreader无需重新安装。
注1:稳定版会积累一定的特性和bug修复后不定期发布;开发版使用项目最新代码每天自动编译,适合喜欢尝试新特性的朋友。
注2:升级安装KPVBooklet只需下载最新KPVBooklet安装包,使用安装bin文件升级。
注3:Update Your Kindle显示为灰色可能是因为安装了特定版本的多看,可在Kindle磁盘根目录下创建一个名为DUOKAN_DISABLE的文件,然后重启机器再安装。
使用Kindlepdfviewer打开PDF文档时会出现选择阅读器的提示对话框,如下图所示:
如果需要PDF重排请选择PDFReflow阅读器。在当前对话框中快捷键”T”可以关联选择的阅读器到所有PDF文档,下次打开PDF时将不再出现此对话框;快捷键”F”会关联选择的阅读器到此文档。如果需要清除阅读器关联,请用PDFReflow阅读器打开一个PDF文档后按ALT+C,清除此文档的阅读器关联;按SHIFT+C清除对此文档格式的关联。
Koreader可以通过KPVBooklet与原生系统集成,在原生系统主界面即可显示EPUB、DjVu等文档。默认使用Koreader打开PDF、EPUB、DjVu、FB2、CHM和DOC文档,使用原生系统自带阅读器打开MOBI、AZW和TXT文档。也可以长按PDF文档在弹出窗口中选择GOTO来使用原生阅读器打开PDF文档。
在PDF阅读页面之后,点击屏幕顶部可打开文档菜单对话框,点击屏幕左侧可上翻页,点击屏幕右侧可下翻页,点击屏幕底部可打开设置对话框。
在屏幕下方弹出的设置界面依次点击1-2-3可对当前文档页面重排。
在Kindlepdfviewer的PDF阅读界面按“Aa”键可以调出重排参数调整界面进行排版微调。目前可调参数包括:字体大小、页边距、行间距、分词间距、对齐方式、最大栏数、水平较正、字体黑度、屏幕旋转等。如下图所示:
以下是各参数的使用方法(使用2012.11稳定版):
(测试使用商务印书馆《汉译世界学术名著》丛书PDF文档)
如果遇到视频无法播放的情况请使用较新的Chrome或者Firefox浏览器重新打开本网页。
如果原始页面正文四周有污点或者旁注,会影响程序判断正文的缩进方式,自动重排经常会出现大段空白和断行。手动切边把正文四周切掉之后再重排可以避免这种情况出现,让重排后的文档排版更整洁。使用方法见视屏演示,按“Aa”键调出重排参数调整对话框,在切边(Trim Page)选项中选择手动切边(manual),使用五向键的确认键打开原始页面视图,首先通过五向键调整切边的左上角,确认左上角之后再调整切边右下角。确认之后重排即使用切边以后的页面。对于大部分文档,一般不需要每一页都做手动切边,如果当前页码是奇数页,之后遇到奇数页就会自动使用当前页面的切边信息。
下载最新版Koreader/Kindlepdfviewer软件包,把ZIP文件包解压缩到Kindle磁盘根目录,即可升级安装Koreader/Kindlepdfviewer。
需要卸载软件请直接删除Kindle下的koreader/kindlepdfviewer目录, 把安装过的对应软件的uninstall文件逐一拷贝到Kindle磁盘根目录,点“Update Your Kindle”即可卸载相应软件。
大家使用软件时,欢迎把无法生成可读排版的情况作为bug报告给我,方便在后续的版本中进行修复。Bug报告请提供原始PDF文档或出现问题的页面,重排使用的参数截屏,并发送到我的邮箱:chrox@网易126邮箱;或者回复帖子Kindle/Kobo开源阅读软件KOReader更新日志,功能建议和Bug反馈;或者到Koreader项目的问题列表中反馈。
更多关于Koreader的资源和讨论请关注: