网页开发者——快速内嵌式PDF查看
通过 PDF.js 或浏览器原生查看器嵌入网页的 PDF 文件,在线性化处理后加载速度显著提升。首页会在完整文件下载完成前渲染,从而避免用户长时间盯着加载指示器,保持浏览体验。
大多数自称PDF优化工具的软件实际上只是图像压缩器。它们会降低JPEG图像的质量,报告文件大小变小,然后就完事了。这种方法虽然有效,但却忽略了许多PDF文件普遍存在的结构性臃肿问题。例如,如果一份幻灯片中每张幻灯片都嵌入了同一个200KB的logo,那么这张图片就会被当作40个独立的对象存储40次。压缩每个副本节省的空间远不及只存储一次图像并引用40次来得有效。这就是去重——而大多数“优化”工具却做不到这一点。
线性化是另一个常被忽略的技术。非线性化的 PDF 文件会按照页面创建或编辑的顺序存储页面——这意味着查看者必须下载整个文件才能显示任何内容。线性化会重新排列字节布局,使第一页的数据位于文件的最前面。这种差异显而易见:一个经过线性化的 20 MB 目录在慢速网络连接下不到一秒即可显示第一页;而未经线性化的相同文件则需要几秒钟才能显示任何内容。对于在网站、电子邮件或 CDN 上提供的 PDF 文件,线性化是您可以进行的最具影响力的结构性更改。
结构优化解决的问题与压缩不同。以下六个用例中,线性化、去重和字体子集化能够带来最显著的差异。
通过 PDF.js 或浏览器原生查看器嵌入网页的 PDF 文件,在线性化处理后加载速度显著提升。首页会在完整文件下载完成前渲染,从而避免用户长时间盯着加载指示器,保持浏览体验。
Gmail 将附件大小限制为 25 MB;许多企业邮件服务器的限制更为严格。一份包含大量重复 logo 图片的品牌报告,仅通过去重功能就能显著缩小文件大小,而收件人却看不到任何质量变化。
季度报告、董事会演示文稿和客户提案通常包含重复的品牌元素和远超文档实际所需的字体集。优化可以在不改变读者所见任何文字或像素的前提下,减少这两项内容。
通过下载链接或嵌入式阅读器分发的数字出版物(电子书、产品目录、产品手册)如果采用线性化设计,可以更快地触达读者,并带来更流畅的阅读体验。在其余章节下载的同时显示第一章,是区分读者是匆匆离开还是认真阅读的关键所在。
较小的线性化 PDF 文件在移动设备上打开速度明显更快,尤其是在使用移动网络连接时。字体子集化和去重技术通常可以大幅减小文件大小,使 PDF 文件在移动浏览器上从“打开缓慢”变为“立即打开”。
文档存档中会积累大量多次编辑的 PDF 文件,每次编辑都会留下孤立对象和重复资源。优化可以消除这些累积的冗余信息,生成干净、紧凑的文件,使其更易于存储、备份和跨系统迁移。
在浏览器中进行结构优化(无需服务器)需要解决一些复杂的工程问题。这对您意味着什么?
线性化:LuraPDF 使用 pdf-lib 库写入一个新的 PDF 字节流,文件开头是第一页的对象,后面跟着一个线性化字典,该字典为渐进式下载阅读器提供指向其余内容的映射。这不会改变 PDF 的内容,而是改变字节在磁盘上的排列顺序,从而可以在完全下载完成之前进行部分渲染。去重:引擎会计算每个嵌入图像 XObject 的内容哈希值。哈希值匹配的对象会被合并——保留第一个实例,页面内容流中后续的每个引用都会被重写,指向同一个共享对象。节省的空间与给定图像被单独嵌入的次数成正比。
字体子集化:对于每个嵌入的字体,LuraPDF 会分析文档文本流中实际引用的 Unicode 代码点。然后,它会重建字体的字形表,使其仅包含这些代码点,并丢弃其余字符集。对于嵌入了数千个字形的 CJK(中文、日文、韩文)字体,如果文档仅使用几百个字形,则文件大小的减少非常显著。去除未使用对象:在去重和子集化之后,引擎会遍历 PDF 的交叉引用表,并标记文档目录中可访问的每个对象。不可访问的对象(例如已删除的页面、已移除的表单字段、旧的版本快照)将从新文件的交叉引用中排除,从而有效地从输出中删除它们。
| 特征 | LuraPDF | Smallpdf / Sejda | Adobe Acrobat |
|---|---|---|---|
| 线性化(快速网页视图) | 是的——完全线性化 | 部分功能——仅部分工具 | 是的 |
| 图像对象去重 | 是的 | 很少包含 | 是的 |
| 字体子集 | 是的 | 很少包含 | 是的 |
| 在浏览器中处理文件(无需上传) | 是的——完全本地化 | 否——需要服务器上传 | 是的——已安装软件 |
优化效果最佳的前提是了解哪种技术针对哪种问题。根据文件类型选择合适的优化方法,才能获得最佳结果。
如果要在网站或电子邮件链接上提供 PDF 文件,请将其线性化——对于网络托管文档而言,首页渲染速度是用户最直观的收益。
首先对幻灯片和品牌报告进行去重——这些文件几乎总是包含重复的徽标和背景图像,去重操作可以将其删除,而不会造成任何质量损失。
在向外部分发 PDF 文件时启用字体子集功能——尤其适用于使用包含大量字符集的设计字体的文档,或在 InDesign 或 Illustrator 中创建的任何文档。
将优化功能与 PDF 压缩功能结合使用,可最大限度地减小文件大小——优化功能首先去除结构冗余,然后压缩功能以较低质量重新编码图像,从而进一步减小文件大小。
如果 PDF 文件是共享模板,请务必保留一份未经优化的备份——子集化会移除未使用的字形,这意味着以后如果需要在这些字符中添加新文本,则需要重新嵌入完整的字体。
之后请在目标查看器中测试优化后的 PDF 文件——线性化 PDF 是标准格式,但一些企业文档管理系统有其自身的 PDF 处理特性,值得验证。
拖放您的 PDF 文件,即可在浏览器中运行所有三种结构优化技术。更快的网页加载速度、更小的电子邮件附件、更干净的文件——无需上传、无需注册、无水印。