编码器的PDF规范:Adobe还是ISO?

use*_*407 48 c c++ pdf specifications

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

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

Dav*_*che 38

你实际上可以使用你提到的两种来源; 混乱是历史的.

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本身,您也可以从Adobe获取它,该文档将是相同的.请参阅Acrobat上的Adobe DevNet站点:

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

只需下载Acrobat SDK即可获得文档作为其中的一部分.

让我在代码中对"定位PDF规范"添加一个警告.我真的,真的,真的建议你更清楚地明确说明你对PDF的需求(编辑,生成,质量控制(预检)),然后查找或询问满足这些需求的现有库,或者可以扩展到满足您的需求.

编写一般支持"PDF"的东西将是一项艰巨的任务.PDF规范是庞大的,错综复杂的,充满......好......细节.有龙!


更新:

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

该文件的内容后来被正式采用为一般PDF,ISO 32000-1的ISO标准.

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

如果您开始开发PDF软件,从上面的Adobe链接获得(免费)PDF就足够了.

  • 免费 Adob​​e 规范的链接已损坏。这个目前有效:https://opensource.adobe.com/dc-acrobat-sdk-docs/standards/pdfstandards/pdf/PDF32000_2008.pdf 不幸的是,我无法编辑这篇文章,因为用于编辑这篇文章的 Stackoverflow 队列已满。 (2认同)

小智 5

自今天(2023 年 4 月)起,得益于一些慷慨的赞助商,所有人都可以免费使用 PDF 2.0 ISO 标准。其中还包括 ISO 批准的勘误表和新的 PDF 2.0 加密扩展。请参阅https://www.pdfa.org/announcing-no-cost-access-to-iso-32000-2-pdf-2-0/获取您自己的副本。

ISO 32000-2 是第一个完全在供应商中立、基于共识的论坛中开发的 PDF 规范。我们进行了许多更正和澄清,以帮助每个 PDF 用户确保可靠性和互操作性,因此请停止使用已有十多年历史的旧版本。


Mat*_*son 3

PDF 不是一种轻量级格式。它基本上是后记,上面有压缩。您肯定想使用现有的库,而不是编写自己的库。这是一项艰巨的任务。

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

我没怎么看过,但libgnupdf看起来还不错。

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

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

  • 问题不在于开源(实际上它是+1),问题在于GPL 及其病毒许可证。 (8认同)
  • PostScript 和 PDF 之间实际上存在巨大差异。将 PostScript PDF 称为压缩之上并没有给予任何一种语言太多的信任。最大的区别也许是 PostScript 是一种真正的编程语言,而 PDF 不是。这是一个巨大的差异,也解释了为什么现在使用 PDF 格式(显然还有其他原因)而 PostScript 正在消失。 (8认同)
  • 不,你实际上不知道。PostScript 的问题在于它实际上是一种编程语言,您需要执行该程序(每个 PostScript 文件都是)并允许其生成输出的代码。PDF 非常非常简单,只包含非常简单的指令,例如“移动文本原点”、“绘制矩形”、“设置填充颜色”、“设置字体”……这确实是一种完全不同的动物。(我刚刚写完关于规范的背景答案,这应该对他有帮助:)) (5认同)
  • @MatsPetersson:请不要通过(错误地)引用或参考维基百科来回答 StackOverflow 上的技术问题。这对你的声誉没有任何好处……我什至想请你删除你上面的答案——它是完全错误的,可能会引导人们走上错误的道路! (3认同)
  • 另外,gnupdf 是 GPLv3,所以它没用。 (2认同)