让小屏幕kindlePaperWhite2支持PDF

今天刚到手kpw2,购买前已知对pdf支持不佳,按耐不住,倒腾一番,完美支持pdf

使用小屏幕Kindle阅读PDF文档时,如果文档不是专门为小屏幕阅读器排版,就会经常出现显示字体太小的情况,造成阅读不便。而Kindle的屏幕刷新率又太低,页面局部放大后再移动阅读区域亦不现实。解决这一问题目前常用的方法有以下三种:

  1. 使用预处理软件对PDF文档进行裁剪页边,比如用裁边软件Briss去掉PDF文档的页边空白,使可阅读区域尽量大,再把生成的PDF文档放到Kindle里阅读。部分文档经过裁剪之后可以获得很好的阅读效果,但是还有一部分文档处理之后的页面仍然过大。
  2. 使用OCR(光学字符识别)软件把PDF中的文字提取导出为其他可重新排版的文档格式,如TXT和MOBI等。由于OCR存在一定的识别错误率,也不能保留排版样式(比如字体、字号和图表公式),因此这种方法的应用范围有限。
  3. 使用阅读器提取出文档中的字符和样式,以适应屏幕宽度的方式重新排版(称为文字回流,Text Reflow)。这种方法虽然可以保留字体样式信息,但是对于图表和公式的支持和方法二一样不够好;这种方法的另一个缺陷是不能重排扫描版的文档,因为扫描版文档中无法提取出字符和格式信息。

而本文要介绍的Kindle上的阅读器Koreader采用图像分割再重排的方式处理PDF文档,这样不仅支持文字版PDF重排和数学公式的重排,还能对扫描版PDF和DJVU文档进行重新排版。 Koreader重排的原理后文有简单介绍。

简单介绍KOReader
“Kindle的PDF阅读外挂”

Koreader是在GPLv3协议下开放源代码的Kindle阅读器,支持PDFDJVUEPUB, 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倍仍然保持了公式的完整。

扫描版PDF的重排

Koreader支持实体书扫描的PDF文档重排,重排效果如下:

扫描版PDF页面的重排

扫描版PDF页面的重排

左侧为重排前的扫描PDF页面,右侧是重排后的页面。

中文文档的重排

经过测试Koreader对大部分英文文档都可以获得很好的重排效果。而中文文档因为字间距太小,没有西文词之间的空格所以重排时应该选择较小的词间距。理论上只要中文字之间的间隔足够大,对中文文档也能获得很好的重排效果。这是对中文文档的重排测试(使用《红楼梦》脂评汇校本PDF文档):

中文PDF文档的重排

中文PDF文档的重排

左侧为重排前的PDF页面,右侧是重排后的页面。重排效果是字体样式全部保留,只增加了字体大小。

对中文竖排文档的重排(使用中华书局《点校本二十四史》扫描版PDF):

中文竖排版的重排

中文竖排版的重排

左上为重排前的原始页面,右上是重排使用的参数,使用了较小的字号、较小的词间距和90度旋转屏幕。下图是重排后的显示效果。

软件安装
Kindle 2、Kindle 3和Kindle DX(G):
  1. Kindle 2/3/DX(g)越狱

    到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的目录。如果越狱不成功,很可能是因为设备已经越狱过,请忽略此步,直接尝试下一步。

  2. 安装launchpad

    安装前请先确认设备已经越狱。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的目录。

  3. 安装Kindlepdfviewer或Librerator

    稳定版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使用的启动快捷键序列不同所以二者可以互不影响地使用。

Kindle 4 NT和Kindle 4 Black:
  1. Kindle 4越狱

    到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-k4-x.x.x.zip (x.x.x对应版本号)。把下载的ZIP文件解压缩之后,将data.tar.gzENABLE_DIAGS两个文件拷贝到Kindle磁盘的根目录中。断开Kindle和电脑的连接,通过Kindle的Menu > Settings > Menu > Restart重启机器进入诊断模式。使用五向键依次选择“D) Exit, Reboot or Disable Diags” 、”R) Reboot System”、”Q) To continue”。重启后主页会出现一本名为”You are Jailbroken”的书,说明越狱成功。

  2. 安装kite

    到Hi-pda论坛的这个帖子下载安装文件update_kite_0.0.1_install-k4.bin,并将其拷贝到Kindle的根目录中。断开Kindle和电脑的连接,通过Menu> Settings> Menu> Update Your Kindle升级安装。

  3. 安装Librerator

    到MobileRead论坛的这个帖子下载最新版Librerator。把下载的ZIP文件解压缩到Kindle磁盘根目录。

Kindle Touch和Kindle Paperwhite:
  1. Kindle Touch/Paperwhite(2)越狱
    1. 到MobileRead论坛的这个帖子里下载越狱文件kindle-jailbreak-x.x.N.zip (x.x.N对应版本号)。其中1.9.N版本可以越狱所有5.0.x –  5.4.4固件版本的Kindle设备。
    2. 把下载的ZIP文件解压缩之后,再将其中的kindle-5.4-jailbreak.zip解压缩,把解压获得的三个文件“bridge.sh”、“jb.sh”和“Update_jb_$(cd mnt && cd us && sh jb.sh).bin”拷贝到Kindle磁盘根目录。
    3. 断开Kindle和电脑的USB连接,依次点击Kindle的主页按钮([Home] )> 菜单按钮([Menu] )> 设置选项(Settings )> 菜单按钮([Menu]) > 更新您的Kindle(Update Your Kindle),几秒钟后屏幕下方出现 “***** JAILBREAK *****” 字样表示越狱成功。
  2. 安装KPVBooklet

    这个地址下载最新的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来安装。

  3. 安装Koreader

    这个地址下载最新的Koreader安装包。将下载的koreader-kindle-arm-linux-gnueabi-*.zip文件解压缩后得到的两个目录(extensions和koreader)拷贝到Kindle磁盘根目录,断开Kindle和电脑的USB连接。在Kindle主界面即可直接用Koreader打开PDF和EPUB文档。

  4. 关于原生系统固件升级

    开启WIFI的情况下原生系统可能会在后台自动升级固件。不管手动固件升级还是自动固件升级都会擦除KPVBooklet启动器造成Koreader无法启动,解决这个问题只需要升级完成后重新安装KPVBooklet即可,Koreader无需重新安装。


注1:稳定版会积累一定的特性和bug修复后不定期发布;开发版使用项目最新代码每天自动编译,适合喜欢尝试新特性的朋友。
注2:升级安装KPVBooklet只需下载最新KPVBooklet安装包,使用安装bin文件升级。
注3:Update Your Kindle显示为灰色可能是因为安装了特定版本的多看,可在Kindle磁盘根目录下创建一个名为DUOKAN_DISABLE的文件,然后重启机器再安装。

软件使用
键盘版

使用Kindlepdfviewer打开PDF文档时会出现选择阅读器的提示对话框,如下图所示:

选择PDF阅读器

选择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可对当前文档页面重排。

重排设置1、2、3

排版参数微调

在Kindlepdfviewer的PDF阅读界面按“Aa”键可以调出重排参数调整界面进行排版微调。目前可调参数包括:字体大小、页边距、行间距、分词间距、对齐方式、最大栏数、水平较正、字体黑度、屏幕旋转等。如下图所示:

重排参数调整界面

重排参数调整界面

以下是各参数的使用方法(使用2012.11稳定版):

  • 换行重排(Reflow)开启时,选择不同的字号可以放大和缩小页面字体。注意实际显示的字体大小不一定与选择的大小完全相同。
  • 软件支持先切边后重排。切边(Trim Page)选择自动模式(auto)时,软件会自己选择切除页面白边,使内容区域最大化;也可以选择手动切边(manual),具体使用方法请看下节视频演示
  • 软件能够自动识别并去除扫描PDF/DJVU页面上的污点(Defect),可选污点大小,默认使用中等(medium)大小。
  • 重排生成页面的页边距(Page Margin)有三档可调,默认使用中等(medium)页边距。
  • 重排生成页面的行间距(Line Spacing)有三档可调,默认使用中等(medium)行间距。
  • 重排过程中断词阈值使用词间距(Word Spacing/Word Gap)参数,建议中文文档选择较小(small)词间距,英文文档选择中等(medium)或较大(large)词间距。
  • 重排页面的渲染质量(Render Quality)有三档可调,选择高质量(high)时显示效果最好但是重排时间也最长,选择低质量(low)时重排时间可以大大缩短。默认使用高质量渲染。
  • 重排扫描PDF页面时可以对页面文字进行水平较正(Auto Straighten),数字表示最大校正角度,默认此选项关闭(最大校正角度为0),开启之后重排时间会大大增加,文字版PDF请勿打开。
  • 重排页面的对齐方式(Justification),有自动(auto)、左对齐(left)、居中(center)、右对齐(right)和两端对齐(full)可供选择。
  • 重排多栏排版的文档时可指定分栏数(Columns)。
  • 重排页面的字体黑度(Contrast)有5级可调,注意默认(default)字体黑度时重排速度最快。
  • 支持0°、90°、180°和270°屏幕旋转,可使用90°旋转重排竖排版的文档。
手动切边(视频演示)

(测试使用商务印书馆《汉译世界学术名著》丛书PDF文档)

如果遇到视频无法播放的情况请使用较新的Chrome或者Firefox浏览器重新打开本网页。



如果原始页面正文四周有污点或者旁注,会影响程序判断正文的缩进方式,自动重排经常会出现大段空白和断行。手动切边把正文四周切掉之后再重排可以避免这种情况出现,让重排后的文档排版更整洁。使用方法见视屏演示,按“Aa”键调出重排参数调整对话框,在切边(Trim Page)选项中选择手动切边(manual),使用五向键的确认键打开原始页面视图,首先通过五向键调整切边的左上角,确认左上角之后再调整切边右下角。确认之后重排即使用切边以后的页面。对于大部分文档,一般不需要每一页都做手动切边,如果当前页码是奇数页,之后遇到奇数页就会自动使用当前页面的切边信息。

软件升级

下载最新版Koreader/Kindlepdfviewer软件包,把ZIP文件包解压缩到Kindle磁盘根目录,即可升级安装Koreader/Kindlepdfviewer。

软件卸载

需要卸载软件请直接删除Kindle下的koreader/kindlepdfviewer目录, 把安装过的对应软件的uninstall文件逐一拷贝到Kindle磁盘根目录,点“Update Your Kindle”即可卸载相应软件。

Bug报告

大家使用软件时,欢迎把无法生成可读排版的情况作为bug报告给我,方便在后续的版本中进行修复。Bug报告请提供原始PDF文档或出现问题的页面,重排使用的参数截屏,并发送到我的邮箱:chrox@网易126邮箱;或者回复帖子Kindle/Kobo开源阅读软件KOReader更新日志,功能建议和Bug反馈;或者到Koreader项目的问题列表中反馈。

更多内容和讨论

更多关于Koreader的资源和讨论请关注:

  1. Kindle/Kobo开源阅读软件KOReader更新日志,功能建议和Bug反馈
  2. Kindle Paperwhite原生系统+Koreader=完美阅读体验 – 豆瓣
  3. 如何解决 六寸的Kindle 看扫描版 PDF 的问题? – 知乎
  4. KOReader项目主页 – GitHub
  5. KOReader用户指南 – GitHub
  6. KOReader: a document reader for PDF, DJVU, EPUB – Mobilerea
  7. 转自http://vislab.bjmu.edu.cn/blog/hwangxin/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值