ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PDF 压缩后文字不能复制?这样压才对

PDF 压缩后文字不能复制?这样压才对 先说结论PDF 压完文字选不中了问题不在压缩率在压缩方式。同一份文件我用两种方式各压了一遍一种压完还能全文搜索另一种只剩一堆图片——差别不在参数在它有没有把 PDF 当成结构化文档来处理。两条路径产物完全不同第一条整页栅格化。把每一页渲染成一张图片再把这些图片打包成新的 PDF。实现简单体积降得也猛。代价是文字层、矢量图形、超链接、书签全部消失——你拿到的是一本图册不再是文档。搜不到字就是这么来的。第二条只动内嵌位图。解析 PDF 结构找出真正撑体积的那些图扫描页、照片、截图逐张重新编码页面尺寸、文字、矢量、链接原样不动。一份 PDF 里文字和矢量本身很小字体通常几十到几百 KB真正把文件撑到几兆几十兆的几乎总是内嵌位图。所以第二条路径能拿到的压缩空间跟第一条差不了多少但文档还是文档。关键判断这张图到底该不该缩不是所有内嵌图都需要降采样。判断依据是有效 DPI——图片的像素数除以它在页面上实际占的物理尺寸。同一张 2400 像素宽的图铺满整页和缩成一个角标需要的分辨率完全不同。前者降下去会糊后者留着纯属浪费。我拿那份 4 页图文报告实测工具报出来的原图有效 DPI 是359×452。注意这是两个数横向 359、纵向 452。图片放进页面时可能被非等比缩放横纵方向的有效 DPI 因此不一样。只按一个方向判断要么缩过头、要么白留像素。四档实测同一份文件跑四个档位横纵有效 DPI 都是 359×452差别在降采样的目标档位结果体积降幅内嵌图重编码降采样到质量屏幕 / 邮件 72 dpi98 KB−98.7%4/4 张481×255q82电子书 150 dpi560 KB−92.5%4/4 张1003×531q88打印 300 dpi3.08 MB−57.7%4/4 张2400×1062q92无损结构7.27 MB−0.1%0/4 张不动像素—无损结构那档最能说明问题一张图都没重编码体积几乎没变但它仍然清理了 4 项未使用资源、重压并合并了 4 条结构流。这说明「结构优化」和「图片降采样」是两件独立的事——前者永远无损后者才是体积大头。每张图的处理决策也是分别做的不是一刀切。工具会给出每张图的原始体积、重编码后体积、有效 DPI 和最终质量参数。压完到底有没有被压坏这是我最关心的一步。光看体积降了多少没意义得验证文档语义还在不在。三个档位的产物逐个用 PDF 解析库回读原文件72 dpi150 dpi300 dpi页数44 ✓4 ✓4 ✓可提取文字2723 字符2723✓2723✓2723✓链接注解4 个4 ✓4 ✓4 ✓页面框595.3×841.9一致 ✓一致 ✓一致 ✓压到只剩原来 1.3% 体积的那一档文字一个字符都没少链接全部存活页面框分毫不差。顺带一提处理流程本身也是可见的解析结构 → 逐张重编码内嵌图 → 回收对象并写出 →回读校验页面。最后那步是它自己做的验证跟我在外面用解析库做的是一回事。哪些情况压不动得先知道纯文字排版的 PDF 几乎没有空间。我拿一份 6 页纯文字的文件测37 KB 压完 33 KB只省 11%——它内嵌图 0 张能优化的只有结构流和未用资源。所以论文、合同这类纯文字文档别指望压缩率它的体积本来就不在图片上。加密或有权限保护的 PDF 要先解除保护否则解析不了。数字签名的 PDF 一经重写签名就会失效这个是结构性的任何重写工具都一样。有些图片格式动不了JPEG 2000、JBIG2、CCITT 传真、CMYK 印刷 JPEG以及需要完整色彩管理的图片浏览器没法可靠地等价重编码只能原样保留。最后判断一个 PDF 压缩工具靠不靠谱不用看它宣传的压缩率压完之后做三件事就够了全文搜一个词、点一下里面的链接、看看页数对不对。三样都在才叫压缩少了任何一样那是把文档降级了。我用的是图映一个免费的在线图片处理工具的 PDF 压缩全程在浏览器本地跑——F12 开着 Network 面板压完整个流程没有一个上传请求。这类文档很多时候是合同、报表、证件材料能不出设备是有意义的。利益相关这个工具是我参与做的。文中所有数字都是写这篇时实测跑出来的测试方法和验证方式都写在上面可以自己复现。
返回列表