跳到主要内容

文件格式

什么是 PDF?文件结构、发展历史与转换技巧

PDF 是一种页面描述格式,能让文档在任何设备上都保持相同的外观。本文介绍它的历史、内部结构、版本,以及转换时需要注意的地方。

作者: Hemen Dönüştür Editör Ekibi发布日期: 阅读约 8 分钟

标有 PDF 字样和页面图标的文件徽章

用电子邮件发送一份合同时,你希望对方打开后看到的是同样的版式、同样的字体和同样的分页。PDF(Portable Document Format,便携式文档格式)正是为此而生。如今,大多数被视为“定稿”的文档,从发票、法院判决书到学术论文和登机牌,都以 PDF 的形式流转。本文将介绍 PDF 的由来、文件内部的构成、现有的版本,以及把 PDF 转换成其他格式时哪些内容会保留、哪些会丢失。

什么是 PDF?

PDF 是一种以固定外观描述文档每一页的文件格式。在 Word 这类编辑格式中,文字是“流动”的:窗口变窄或字体改变,行就会重新折行。而在 PDF 中,页面上每个字符、每条线和每张图片的位置都是事先确定的。文件把文字、字体(通常是嵌入的)、图片和矢量图形打包在一起,因此无论是在没有安装原始程序的电脑上、在手机上还是在打印机上,文档的呈现效果都一样。

这种设计也有代价:PDF 是一种输出格式。它不一定包含段落、标题或表格这样的语义信息,很多时候只包含“在这个坐标绘制这些字形”之类的指令。记住这一点,就能理解为什么编辑 PDF 或把它还原为 Word 文档会那么困难。

简要历史

PDF 可以追溯到 Adobe 联合创始人 John Warnock 在 1991 年提出的名为“The Camelot Project”(卡米洛特计划)的构想,目标是从任何应用程序中捕获文档,并在任何机器上查看或打印。据 Adobe 介绍,这项工作在 1992 年已演变为 PDF,PDF 及其阅读软件 Acrobat 于 1993 年 6 月 15 日正式发布。

在最初的十五年里,PDF 一直是 Adobe 的规范,并随着版本迭代不断增加功能:1.2 版加入交互式表单(AcroForms),1.4 版加入透明度和 XMP 元数据,2003 年 8 月发布的 1.5 版加入了图层、对象流和交叉引用流。真正的转折点出现在 2008 年:2008 年 7 月 1 日,PDF 1.7 成为国际标准 ISO 32000-1:2008,格式的管理权移交给 ISO 委员会。随后 PDF 2.0(ISO 32000-2)于 2017 年发布,并在 2020 年 12 月推出了修订后的第二版。自 2023 年 4 月起,PDF 协会(PDF Association)免费提供 ISO 32000-2 的下载。

从规模上看:Adobe 在 2023 年 6 月的一篇博客文章中表示,其用户在过去一年里在 Acrobat 产品中打开了超过 4000 亿个 PDF。这一数字仅涵盖 Adobe 的产品,不包括浏览器内置的阅读器和其他软件。

PDF 文件里面有什么?

用文本编辑器打开一个 PDF,第一行会显示类似 %PDF-1.7 的版本标记。文件的其余部分由四个主要部分组成:

  1. 文件头(Header):第一行,声明格式和版本。
  2. 文件体(Body):构成文档的“间接对象”。每个对象都有对象编号和生成编号。页面、字体、图片和内容流都是对象。
  3. 交叉引用表(xref):列出每个对象的字节偏移量,阅读器无需扫描整个文件就能直接跳到任意页面。从 PDF 1.5 开始,它也可以存储为压缩的“xref 流”。
  4. 文件尾(Trailer)与文件结束标记:一个指向文档目录(/Root)的字典,后面跟着 startxref(xref 的起始位置)和 %%EOF 标记。

一个简化的示例如下:

%PDF-1.7
1 0 obj << /Type /Catalog /Pages 2 0 R >> endobj
2 0 obj << /Type /Pages /Kids [3 0 R] /Count 1 >> endobj
3 0 obj << /Type /Page /Parent 2 0 R /Contents 4 0 R >> endobj
4 0 obj << /Length 44 >> stream
BT /F1 12 Tf 72 720 Td (Hello) Tj ET
endstream endobj
xref ...
trailer << /Root 1 0 R /Size 5 >>
startxref ...
%%EOF

页面的实际内容位于内容流中。在上面的示例里,BT ... ET 块是一个文本对象,Tf 选择字体和字号,Td 设定位置,Tj 绘制文字。可以看到,这里没有“段落”或“标题”的概念,只有定好位置的字形。即使是视觉上的一行文字,也常常被拆成好几个片段。

PDF 的另一个特点是增量更新。添加批注或签名时,软件可以把新对象和新的 xref 段追加到文件末尾,而不必重写整个文件。数字签名正是依靠这一机制来保证已签名内容不被改动。

PDF 子标准与配置文件

除 ISO 32000 之外,还有一些面向特定用途的受限 PDF 配置。最知名的是为长期归档设计的 PDF/A,其第一部分 PDF/A-1 于 2005 年 10 月以 ISO 19005-1 的形式发布。PDF/A 文件必须嵌入所有字体、以与设备无关的方式定义颜色并包含 XMP 元数据,同时禁止加密、JavaScript、音频、视频和外部依赖。这就是档案馆和公共机构经常要求提交 PDF/A 的原因。

更实际的区分是文本型 PDF与扫描型 PDF。从 Word 或浏览器中“另存为 PDF”生成的文件包含真实的文字,可以选中、搜索和复制。而用扫描仪扫描的纸张只是 PDF 里的一张图片,要从中提取文字需要 OCR(光学字符识别)。

PDF 用在哪里?

  • 法律与公文往来:合同、申请书和裁决书,得益于对数字签名的支持。
  • 财务与电子商务:发票、收据和银行对账单。
  • 出版与印刷:印刷用文件、电子书和产品目录。
  • 学术:论文、学位论文和课程讲义。
  • 表单:可填写的申请表和声明表。
  • 归档:需要保存数十年的记录,使用 PDF/A。

优点与缺点

优点缺点
在所有设备上呈现效果一致编辑内容很麻烦
开放的 ISO 标准,免费阅读器众多在小屏幕上难以阅读(文字不会重排)
可嵌入字体,打印质量高常常缺少语义结构(标题、表格)
支持数字签名、加密和表单扫描文件无法搜索
可通过 PDF/A 长期归档嵌入的图片可能使文件变大

哪些程序可以打开 PDF?

通常无需安装任何软件。Chrome、Edge、Firefox 和 Safari 都内置了 PDF 阅读器。在 macOS 上可以用“预览”打开,在 Windows 上可以用 Edge 打开。如需高级编辑、表单设计和签名,Adobe Acrobat 是常见选择。Microsoft Word 也可以打开 PDF 并尝试把它转换成可编辑文档,效果取决于文件的复杂程度。在 Linux 上,Evince、Okular 和 Poppler 工具被广泛使用。

常见问题及解决方法

从 PDF 复制出来的文字是乱的

PDF 可能按绘制顺序而不是阅读顺序存储文字。在双栏论文中,各行可能交错在一起;有些字体嵌入时没有 Unicode 映射,带音调或特殊符号的字符可能显示异常。把 PDF 转换为 TXT 或 Word,通常比直接从阅读器中复制得到的结果更干净。

文件已加密,无法打开或转换

PDF 可以设置两种密码:打开密码和权限密码(用于编辑或打印)。任何转换器都无法在不知道打开密码的情况下读取文件。如果你有密码,请先打开文件、解除保护并重新保存,然后再转换。

扫描版 PDF 无法搜索

文件里是图片而不是文字,所以搜索和复制都不起作用。你需要用 OCR 软件为它添加文字层。

字体与原文不同

如果生成文件的程序没有嵌入字体,阅读器就会用相似的字体代替。导出时启用“嵌入字体”或另存为 PDF/A 可以避免这个问题。

PDF 文件转换技巧

转换 PDF 意味着把固定的页面版式重新构建成可流动的文档,因此再好的工具也只能做出合理的推测。我们的转换器是这样处理的:当你进行 PDF 转 Word 时,文件会上传到我们的服务器,由开源的 Poppler 工具读取每个文字片段及其位置,再把各行合并回段落。粗体、斜体等字符格式和阅读顺序基本都能保留,但多栏页面、复杂表格和定位文本框可能与原文不完全一致。上传的文件会在 30 分钟内从服务器删除。

  • 如果只需要文字,PDF 转 TXT 的结果最干净:去掉格式,只留下可读的纯文本。
  • 如果想在网页上保留页面外观,PDF 转 HTML 会把文字放在页面上的原始位置。
  • 扫描版 PDF 不含文字,所以我们的转换器无法从中提取可编辑的文字。请先进行 OCR。
  • 加密的 PDF 无法转换,你会看到一条提示,要求先移除密码。

反方向的转换要容易得多。使用 Word 转 PDF 时,DOCX、DOC 和 RTF 文件通过 LibreOffice 直接转为 PDF,没有中间步骤,因此页面版式、页眉页脚、表格和图片都会保留。如果你使用的字体没有安装在服务器上,可能会被替换为相似的字体。HTML、Markdown 和 TXT 等来源会排版到 A4 页面上,再由浏览器引擎打印成 PDF。

常见问题

PDF 是什么时候诞生的?

这个想法可以追溯到 John Warnock 1991 年提出的 Camelot 构想。PDF 和 Acrobat 于 1993 年 6 月 15 日发布,2008 年该格式成为国际标准 ISO 32000-1。

PDF 1.7 和 PDF 2.0 有什么区别?

PDF 1.7 是 Adobe 的最后一个版本,2008 年被标准化为 ISO 32000-1。PDF 2.0(ISO 32000-2)完全在 ISO 内部制定,2017 年发布,并在 2020 年版中进行了修订。在日常使用中,两者都能用相同的程序打开。

什么是 PDF/A,什么时候应该使用?

PDF/A 是一种用于长期归档的受限 PDF 配置。它要求嵌入字体,并禁止加密和 JavaScript 等功能。当文档必须在多年以后仍以相同方式打开,或者机构有此要求时,请选择 PDF/A。

为什么 PDF 转 Word 后版式会乱?

因为 PDF 通常没有段落或表格信息,只有定好位置的字形。转换器必须从这些片段中重建行和段落。简单的单栏文档转换效果很好;多栏或表格较多的页面可能需要手动整理。

扫描版 PDF 能转成可编辑的文字吗?

这需要 OCR。我们的转换器不执行 OCR,只会转换 PDF 中实际存在的文字。请先用 OCR 软件处理扫描文档,然后再转换。

转换我的 PDF 安全吗?

文档转换在我们的服务器上进行。文件仅用于转换,并会在 30 分钟内删除。对于高度机密的材料,你也可以选择不上传到任何在线服务。

参考资料

相关转换工具

全部文章