时间:2019-08-20 17:22:35 作者:johnnyl 浏览量:71
PDF 是我们打交道最多的文件格式之一。提到这个格式,即使是对技术并不熟悉的用户,也能说出「通用性好」、「格式不会乱变」这些优点。但同时,PDF 也是让我们感到困惑最多的格式之一,因为与 Word 文档等其他常见办公软件格式相比,PDF 似乎有着太多的「怪癖」,例如复制文字困难、几乎没法编辑等等。PDF 软件数量繁多、质量良莠不齐的现状,也进一步让很多用户无法正确理解和使用 PDF。
然而,事实并非如此。这些问题大多不是 PDF 格式的「缺陷」,而是因为我们在观念上把 PDF 当成了和其他办公文档格式相近的东西,并因此期待 PDF 也具有和后者相似的功能和特征。
尽管 PDF 格式和 Word 格式在实际用途上有诸多重叠之处,但那只是表面现象。从技术角度看,两种格式之间的差异要远远大于 Word 文档和网页之间的差异,甚至还要大于 Word 文档和 Excel 表格之间的差异。
但这并不意味着 PDF 就是一种难以理解的格式。恰恰相反,对大多数用户来说,PDF 可能是他们接触到的格式中最「接地气」、与现实生活最接近的。因为,PDF 与其说是一种数字文档,不如说是实体文档在数字世界中的影像。对 PDF 的操作,很大程度上可以看成对真实纸张的操作,只是操作环境从物理世界换到了数字世界而已。PDF 的创建就是一种虚拟的打印,复制 PDF 文字的过程更像是一种抄写,而 PDF 的编辑实质上是一种涂改。
一旦接受了这个观念,PDF 的很多「怪癖」就显得顺理成章了:打印出来的东西当然不会因为位置的变化而改变外观;抄写的结果很可能与原文存在误差,并且受制于抄写者对文字的理解;涂改的可行性则取决于原有布局留下了多少改动空间,并且再轻微的涂改也会对纸张造成损伤。
当然,只给出这样的结论并不足以令人信服。因此,下文的主要任务就是通过回答几个关于 PDF 格式普遍关心的问题,结合 PDF 的结构和语法,解释为什么「PDF 的本质就是数字化的纸张」,从而深化对 PDF 格式的理解。
为什么 PDF 的外观非常稳定?
在我们日常使用的文档格式中,PDF 文件的外观是最稳定的。一经生成,无论在什么操作系统上、用什么软件打开,得到的显示效果几乎总是一致的。相比之下,Word 所使用 docx 格式的保真性就差得多了:哪怕只是换台电脑,显示效果都可能发生了变化,更不要说用不同版本的 Word 或者第三方软件打开了。
PDF 的这种保真性让它广受青睐,但它究竟是如何做到这一点的?PDF 的稳定是绝对的吗?
「打印」出来的 PDF
如果平时注意观察,容易发现各种软件中涉及 PDF 的操作,用词都比较特别。其他格式都是被「新建」(new / create)出来或者「保存」(save)下来的,只有 PDF 是被「导出」(export)甚至「打印」(print)出来的。这些词语并不是随意选用的,它们本身就说明了 PDF 的重要特征:「导出」暗示着文件编辑已经告一段落,而「打印」则更是形象地表明 PDF 的创建是一个「固化」的过程。
为了进一步理解这种区别,让我们来对比一组外观上完全相同的 Word 文档和 PDF 文档。下图中,右侧的 PDF 格式文件是由左侧的 Word 文件导出得到的,两者的内容都只有「Hello world!」一行居中文字。(注:为了避免不必要的复杂性,我们暂时只以英文文档为例。)
PDF数字界的纸张:科普向图一
先来看 Word 是如何实现这一版式效果的。用任意解压工具将该文档解开(docx 文件 实质上 就是一个压缩包),找到其中的 /word/_rels/document.xml 并打开。其中的关键部分如下(代码经过整理):
PDF数字界的纸张:科普向图二
不必恐惧这些陌生的代码,它们的意义很容易从文档内容本身反推出来。先看倒数第二行,这里记录了整个文档最重要的信息——「Hello world!」这串文字。在它的上面一行,w:rFonts 属性将字体设置为 Times。那么前四行是做什么的呢?从第二行的 center 字样不难猜出,它们控制的是文字所在段落的样式,包括居中对齐等等。
这就是 docx 格式这类 标记语言 (Markup Language)文档的特征:在纯文本上包裹各种「标签」(tag)来描述文本的样式(颜色、位置、字体等等),从而获得格式丰富多变的文档。常见的网页(HTML)、Evernote 笔记( ENML )所用的语法本质上都是标记语言,区别只在于支持的标签各不相同、因此能实现的格式有多有少罢了。