72

我想编写一个可以读取和解码 pdf 文档的应用程序;现在我应该从哪里获得这种文件格式的规格?PDF 格式是由 ISO 组标准化的,但我不清楚从哪里获取此类信息的最可靠来源。

什么是从这种文件格式开始的好来源?

4

2 回答 2

59

您实际上可以使用您提到的两种来源;这种混乱是历史性的。

Adobe 发明了 PDF,并发明了与它一起使用的 Acrobat 产品系列。不同的 PDF 版本与主要的 Acrobat 版本一起发布(例如 PDF 1.3 与 Acrobat 4 一起发布)。

由于采用了 PDF 格式,并且由于编写了许多实际上依赖于专有 PDF 文件格式的 ISO 标准(对于 ISO 标准来说不是一件容易的事情),Adobe 决定将 PDF 格式移交给 ISO。

从那时起一直到今天,都有一个 ISO 委员会负责编辑 PDF 规范并提出新版本。PDF 的 ISO 标准是 ISO 32000。

此外,请记住,根据您要使用 PDF 的位置,许多其他 ISO 标准可能非常有用或必不可少。其中最常用的是 PDF/X(用于在出版界交换 PDF 文件)和 PDF/A(用于创建需要在长期存储中存档的 PDF 文件)。这些规范引用了 PDF 标准的特定版本,并添加了额外的要求和限制。

就规范而言,您可以直接从 ISO 获取所有文档。但是,对于 PDF 本身,您也可以从 Adob​​e 获得它,并且该文档将是相同的。请参阅 Acrobat 上的 Adob​​e DevNet 站点:

http://www.adobe.com/devnet/acrobat.html

只需下载 Acrobat SDK,它就会为您提供文档作为其中的一部分。

让我在代码中添加一个关于“以 PDF 规范为目标”的警告。我真的,真的,真的建议您更清楚地指定您对 PDF 的需求(编辑、生成、质量控制(预检)),然后寻找或询问满足这些需求或可以扩展以满足这些需求的现有库您的需求。

编写一般支持“PDF”的东西将是一项艰巨的任务。PDF 规范很大、很复杂并且充满了……嗯……细节。有龙!


更新:

Adobe 的 PDF-1.7 规范文档的直接链接(第一版,免费下载,在这里:

该文件的内容后来被正式采用为通用 PDF 的 ISO 标准 ISO 32000-1。

但请注意,ISO 提供的 PDF 文件存在一些差异:

  • 与 Adob​​e 的版本相比,页面布局发生了变化。
  • ISO 文件不是免费提供的(下载这份文件的费用为瑞士法郎 CHF 238.-)。

如果您开始开发 PDF 软件,从上面的 Adob​​e 链接中获得(免费)PDF 就足够了。


更新:2021

值得注意的是,ISO 同时发布了 PDF 规范的新版本,称为 ISO 32000-2。ISO 网站上的相关信息。这个新版本于 2017 年发布,并于 2020 年 12 月获得更新。

尽管该文档没有显着改变 PDF,并且大多数关于 PDF 的一般信息(例如免费的 Adob​​e 规范版本)仍然是正确的,但肯定有一些变化:

  • 许多事情,尤其是深度技术性的事情,比如关于透明度的一切,都得到了更新,主要是为了澄清现有的语言(并添加到目前为止或多或少隐含的信息)。这些更新可能会影响如何实施或使用标准的这些部分。
  • 新功能已包含在标准中。

如果您正在编写 PDF 文件,尤其是更简单的文件,Adobe 规范应该仍然可以让您继续前进。如果您想支持 PDF 标准中的所有内容,则需要为最新的 ISO 版本付费(但无论如何这是一项艰巨的任务)。

于 2013-01-01T23:12:37.003 回答
3

PDF 不是轻量级格式。它基本上是在顶部压缩的附言。现有的库绝对是您想要使用的,而不是自己编写的。这是一项艰巨的任务。

或者获取现有的 PDF 编写器应用程序,并从您的程序中启动它。

我没有看太多,但是libgnupdf看起来还可以。

根据维基百科, PDF 结合了三种技术:

  • PostScript 页面描述编程语言的子集,用于生成布局和图形。
  • 字体嵌入/替换系统,允许字体与文档一起移动。
  • 一个结构化的存储系统,将这些元素和任何相关内容捆绑到一个文件中,并在适当的地方进行数据压缩。
于 2013-01-01T16:25:01.210 回答