跳到主要内容
PulsarKit

PDF网页优化

为快速Web查看重建PDF,文档其余部分还在下载时,第一页就能显示出来。

把文件拖到这里

.pdf · 最大300 MB

如何优化PDF

  1. 1

    拖入PDF

    添加一个文件,或最多二十个。文件由你自己的浏览器打开,不会发送到服务器。

  2. 2

    选择网页配置

    保留默认的“网页”配置,会重建对象流并删除没有被引用的资源;选择“仅结构”,只移动各个表,内容的每个字节都不动。

  3. 3

    下载线性化后的文件

    保存结果,放到你的网站上。多个文件会打包成一个ZIP压缩包返回。

线性化改变了什么

普通PDF把交叉引用表放在文件最末尾,阅读器必须先取到文件的最后几个字节,才能开始绘制内容。线性化会重写文件,把目录、提示表和第一页需要的所有对象按阅读顺序放到最前面。支持字节范围请求的Web服务器可以先发送开头的几KB,访问者马上就能看到第一页,其余页面在后台陆续到达。页面里的内容一概不动:文字、字体、矢量图形和图像数据逐字节原样复制,页数、书签、链接和表单字段也都会保留。

两种配置,一个选择

“网页”配置还会把零散的对象收进对象流,并丢弃已经没有任何页面引用的资源,通常能省下百分之几的大小。“仅结构”只做一次线性化,对已签名或已认证的文档更稳妥,因为重新组合对象可能让签名失效。无论选哪种,qpdf都会重建整个文件,所以不稳定的交叉引用表也会在这个过程中顺带修复。

文件始终不离开你的浏览器

qpdf编译成了WebAssembly,在这个页面里运行。文档读入浏览器内存,在那里重建,再直接作为下载交还给你。没有任何上传,不在服务器上排队,事后也没有需要谁去删除的副本。关掉标签页,文件就没了。

常见问题

PDF的快速Web查看是什么?

就是以线性化形式保存的PDF。绘制第一页所需的数据被移到文件开头,浏览器只需下载文档的一小部分就能显示这一页,不必等整个文件下载完。

为什么优化后文件反而变大了?

因为线性化会添加提示表和第二个交叉引用段,用来说明各部分的位置。小文档上,这部分开销可能超过节省下来的空间,让文件大百分之几。这是马上显示第一页的代价,文件本身仍然有效。

会降低图片或文字的质量吗?

不会。没有任何内容重新渲染、重新采样或重新编码。图像流和字体程序原样复制,所以文档在任何缩放比例下看起来都一样,文字层仍然可以选中和搜索。

线性化对打印有用吗?

用处不大。打印驱动在开始打印前会读取整个文件,所以重新排序对打印机没有帮助。它在文档通过网络传输、阅读器可以请求字节范围时才有意义,所以叫快速Web查看。

这和PDF压缩有什么区别?

压缩让文件变小,通常是用较低的质量重新编码图片。这个工具重新排列文件,让它更早开始显示,内容不动。两者解决的是不同的问题,先压缩再做网页优化,效果很好。

所有浏览器都支持快速Web查看吗?

主流阅读器都能识别线性化文件,包括Chrome、Safari、Firefox、Edge和Acrobat。要发挥作用,还需要你的Web服务器响应字节范围请求,几乎所有服务器默认都会。在忽略它的阅读器上,文件照常打开。

对象流是什么,为什么要开启?

对象流把许多小的内部对象打包成一个压缩块,让文件变小,也减少阅读器需要解析的片段数量。它是PDF 1.5规范的一部分,在“仅结构”配置中是关闭的。

相关工具