夜雨聆风学习资料网

ARTICLE · 1072396

这个 1.7 万星的开源 PDF 阅读器,我装了才发现问题

这个 1.7 万星的开源 PDF 阅读器,我装了才发现问题

前两天,我装了一个开源pdf阅读器,仓库名 sumatrapdfreader/sumatrapdf。

它在GitHub上有1.7万Star,2012年开的张,到现在 13 年了还在更,最近一次提交,就在前两天。

一个 13 年没停更的开源项目,挺稀有的。

我装它的时候,一开始就干了两件事,看 PDF,看 EPUB。左键翻页,右键菜单,跟系统自带的阅读器手感差不多,但快一大截,几百页的文档拖到底都不卡。

它九种格式塞在同一个壳子里,PDF、EPUB、MOBI、CBZ、CBR、FB2、CHM、XPS、DjVu。能读漫画压缩包这点,我是真没想到,把它当漫画阅读器用,翻页手势都对得上。

但装完那天晚上,我翻它仓库的时候,看到 ext/mupdf 里藏了一整套命令行工具,叫 mutool。

我当时就愣住了,一个看 PDF 的小阅读器,肚子里怎么塞了一堆能干脏活的命令???

顺着往下扒,我发现了,大多数人装它,只用过它十分之一。

它外层那个壳,九种格式通吃,这个大家大概率都用过了。真正有意思的,是里面那套 mutool,平时你想不起来用它,但真碰到 PDF 的疑难杂症,全靠它兜底。

它最常用的一条,叫 mutool grep,全文检索。你平时在阅读器里 Ctrl+F,只能搜当前打开的这一份。它能在命令行里,一次喂进去几十份文档一起搜,命中哪一页,哪个文件,全给你打出来。

批量核对一批文档里有没有某个词,一条命令加 -q 静默模式,只看返回码,不刷屏。

再说说救文件这件事。一份 PDF 损坏了打不开,它有一招,叫 clean,走修复流程重扫全文对象再存出来。很多别人打不开的文件,它能救回来。顺手把重复的流去重,彩色图按 150 DPI 重新采样再压一遍,体积通常能砍下一截。

送印刷厂出片的人,还会用到 recolor。把整份 PDF 从彩色转到灰度省墨,或者转成 CMYK,顺手删掉文件里残留的色彩管理信息,免得后面校色打架。

最隐蔽也最管用的,是 audit 和 bake。audit 给你生成一份 HTML 报告,把你这份 PDF 拆成 22 类对象,图片,书签,表单,字体,渐变,嵌入文件,再统计每类占了多大,用了哪些绘制算子。一份文件 90 来种算子,它全给你列出来。你想知道为什么这份 PDF 这么胖,看这张表就明白了,是图片没压,还是书签塞太多。

bake 是反着来的,把可填写的表单,可编辑的批注,一个个烙死成页面上固定的图形,交互能力直接抹掉。归档、脱敏的时候很省事。但记住,这步不可逆,烙死就改不回来了。

读 EPUB 的时候,左栏直接出目录

多个文档可以并排开标签页

说到这,我反而想起一个事。

一个 13 年没停更的工具,其实挺像 1880 年代那种电力红利。那时候很多工厂主花大价钱买了电动机,但装完发现效率没提升,因为他们只是用电动机替代了蒸汽机,整个工厂的布局、流程、管理都没变。

大多数人装 SumatraPDF 也一样,只是拿它替代了系统自带阅读器,外壳换了,用法没变。真正吃到它红利的人,是那些打开 mutool,把全文检索、瘦身、修坏、体检报告这些活儿都串起来的人。

一个老项目能更 13 年,靠的不是功能多,是它把脏活都干了,还一直没把壳子做得臃肿。2MB 的便携版,下载解压就跑,这点现在挺难得的。

回到实用这块,得说点实在的。它是 Windows 专属,macOS 和 Linux 上没有官方包,得自己找替代。(A)GPLv3 协议,自己跑完全免费,二次分发要遵守 GPL。

它不替你编辑 PDF,就是个纯阅读器,要加书签、批注这类功能,得用别的工具。mutool 那套命令行是高级货,新手别一上来就啃,批量导出图片默认 150 DPI,要更高清晰度,得手动传 -O resolution=300。

学 LaTeX 的人,拿它配 winedt 加 MiKTeX,编译完自动弹出 PDF 预览,这套组合从 2017 年就被验证了,写论文的人用惯了。

我装它那天晚上,第一反应是,这不就是个看 PDF 的嘛。

扒完 mutool 我才发现,我确实只用过它十分之一。它里外都藏着东西,外是九种格式通吃,里是一整套能干脏活的命令,13 年了,一直没停。

你要是平时也在看 PDF、读 EPUB,下载解压就能跑,不占内存,可以试试。真正值钱的,是你愿意打开 ext/mupdf 那一层。

以上,既然看到这里了,如果觉得不错,随手点个赞,在看,转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~

谢谢你看我的文章,我们,下次再见。

作者,逛逛开源项目

相关学习资料