PDF重排工具k2pdfopt的参数技巧

有一个PDF重排的工具叫做k2pdfopt,这个可能经常自己处理PDF电子书的人有听说过。

虽然这个软件 界面很丑,而且官网也很丑,就像是九十年代徒手写HTML的个人静态博客一样,但其实它是目前最实用的PDF重排版工具(衍生版本除外)。
它牛逼在哪里呢?文字回流(re-flow text)
也就是用OpenCV之类的图像处理库去识别PDF文档中每一个词的边缘,然后把这些词剪下来,重新粘贴。这样就能在在不进行OCR的前提下实现完全的版面重调。
比如说把版面很大的学术文章弄成Kindle也能看得清楚的版式……

但是k2pdfopt里面一些复杂的可指定参数。网络上的中文教程语焉不详,都是互相抄的。我要说的主要是-ws这个重要参数。

k2pdfopt的-ws解释是“smart line breaks”,但其实这个选项一点都不smart。这个参数是用来控制比这个值要大的空白意味着一行结束的导致的词后空白,而比这个值要小的,只能算是词和词之间的间隔。那么这意味着什么?
假如-ws参数设置太大,k2pdfopt会把几乎所有的空白都当成词和词之间的间隔。这样会让重排后的页面的词和词之间充满多余的空格(假如没有预先切边的话,一个页面中是会有很多“行首行尾”空白的)。
假如-ws参数设置太小,又会让k2pdfopt把一点点词间的空白都过度处理成换行。这样的结果就是没几个词就换行一下,非常难看。

所以-ws这个值很难控制,我建议预先用briss之类的软件先把PDF的白边切掉(k2pdfopt本身也自带切边功能);或者开启Auto-crop (-ac)后关掉-ws参数。

其他的参数尽量保持默认,没有需要的话不要乱开autostraighten,erase lines,avoid text select overlap之类的选项。否则会拖慢处理速度。假如感觉文字太小的话,可以把Fixed output font size开起来。但最好事先target device的屏幕尺寸和分辨率(软件右上角)

另外我在笔记本上处理PDF很慢,但Android上基于这个软件的阅读器KoboReader几乎是实时重排,不知道怎么回事 。越狱后的Kindle可以装基于k2pdfopt的koreader插件。一些国产阅读器上也有所谓的重排功能,但我试了一下手头的这台iReader Ocean,并不是基于re-flow的重排,而更像是用换行回车实现的普通排版。