为什么有些pdf很卡?
先把两件事分开:文件大和翻页卡,不是一回事。
我以前也默认卡就是文件太大,直到遇上一份几百 K 的图纸比几兆的扫描件还沉。为了不靠感觉说话,我造了两份测试文件对着量。一份 2.7MB,整页只有一张 3000×2000 的位图;另一份 820KB,一页画了八万条线段。同一个渲染器按 150dpi 各跑三遍:位图那页 0.5 秒,线段那页 1.15 秒。体积不到人家三分之一,慢了一倍多。
道理不复杂。图片页对阅读器只是一件事,解一张图贴上去,开销基本只跟像素数挂钩,解码这条路各家又优化了很多年。矢量页得把一条条绘图指令重新跑一遍,每条线都要算坐标、描边、抗锯齿。CAD 图纸、统计软件导出的散点图、地图、路径特别多的插图,一页几万个对象是常事。所以拿压缩工具去救这类文件多半不管用,压缩压的是图片,指令一条也少不了。
想知道自己手上这份属于哪种,两步就够。先逐页计时,命令行渲染器可以指定只渲染第几页,跑一圈就知道是整本卡还是某几页卡,把卡的那几页翻出来,看看是不是图纸或者复杂图表。再看图的实际分辨率,我那份位图量出来是 363 ppi,屏幕上显示 150 上下就够用,这种降采样才真有效,压缩工具能帮上忙。
如果确认是矢量太密,可行的路子是把那几页光栅化,先渲染成图再塞回文件。同一份八万条线的页面我按 150dpi 走了一遍,文件从 820KB 涨到 1.39MB,渲染时间从 1.15 秒掉到 0.55 秒。代价我也量了:光栅化之前页面上的文字能被完整抽出来,之后一个字都抽不到,选不中也搜不到,放大到一定倍数会糊。所以这招只适合当插图看的那几页,正文和需要检索的页别碰。
还有一类卡跟文件本身没关系,出在阅读器和系统那一侧。同一份文件换个阅读器打开,如果快得多,那就别折腾文件了。
最后交代口径。上面的秒数是我在一台 Mac 上用命令行渲染器量的,换 Acrobat 或者浏览器自带的阅读器,绝对值肯定不一样。方法可以照搬,数字建议自己量一遍。
编辑于 2026-08-26 · 著作权归作者所有