示例PDF语言代码有助于研究官方PDF规范?

use*_*739 -1 pdf pdf-generation

我正在尝试学习PDF文件格式.

为此,我下载了Adobe的PDF规范文件,这个文件非常庞大.

因此,为了帮助我研究PDF的细节,我想通过并行查看一些真实的PDF文件来遵循其抽象解释.

例如,一个想法是创建一个PDF文件(使用LaTeX),该文件只有一个页面,内容甚至只有一个字符a.

但是当我在十六进制编辑器(或其他可以显示内部PDF结构的工具)中打开此PDF文件时,此PDF中有很多二进制或压缩内容.有关我看到的示例,请查看以下屏幕截图:

十六进制编辑器打开我的PDF的截图

我根本无法识别此二进制文件的哪个部分代表我a在此PDF中的角色.

到目前为止我尝试过的所有真实PDF文件都是如此.我根本找不到任何包含工作示例代码的PDF文件,以帮助我理解通用PDF语言规范.

  • 我希望其他人向我解释一下:有没有一种实用的方法来研究PDF规范,同时用真实的PDF文件验证它的点点滴滴?

  • 我想知道:PDF程序员常用哪些软件工具可以帮助像我这样的新手开发人员剖析和解压缩现有的二进制PDF文件,以便使用简单的文本编辑器调查他们的源代码?(注意:我不是要求推荐.根据SO FAQ我只想知道这些工具是否存在,以及它们有哪些名称.)

  • 是否有免费提供的PDF文件资源,其中不包含二进制和/或压缩内容?或者我怎么能创建自己的这样的示例文件?

  • 是否有(最好是免费的)PDF编辑器/解析器可以可视化+剖析PDF文件的原始二进制数据并公开其结构?

我只需要第一个钩子.如果你愿意,可以进入真实世界PDF文件的丛林中的狭窄路径,然后我可以跟随...同时使用这个名为"PDF规范"的丛林破坏者的帮助.

Ale*_*eon 6

创作者的iText(创建和操纵PDF文件一个Java/C#LIB)出版了一本名为工具RUPS.

从sourceforge页面:

RUPS是阅读和更新PDF语法的缩写.RUPS是一种基于iText®的工具,可让您查看PDF文档并浏览不同的PDF对象和内容流.(尚无法更新PDF.)


yms*_*yms 5

我建议使用PDF Vole(基于iText的工具,类似于RUPS)查看一些文件.

PDF Vole和RUPS将允许您浏览PDF文件的结构,检查每个对象上的条目,解压缩压缩流,在需要时解密文件,查看页面和注释的内容,并追踪它们之间的关系文件中的对象.

例如这个文件:
PDF样本

将在PDF Vole中看起来像这样:
PDF Vole Capture

您还可以查看iText本身的类层次结构(与PDF规范几乎是1比1)和解释它的书,iText in Action.


Kur*_*fle 5

我帮助自己学习PDF语法的方式如下:

  • 寻找可以解压缩PDF的工具(解压缩内部流).

  • 找到qpdf,Jay Birkenbilt的命令行工具描述为:"对PDF文件进行结构化,内容保留转换".

  • 经常跑步qpdf --qdf input.pdf decompressed-input.pdf.

  • decompressed-input.pdf在文本编辑器中打开新创建的.

--qdf工具的模式以非常有用的方式转换PDF的二进制和ASCII元素,而不会改变其可视化页面外观(并且速度非常快):

  1. 解压缩先前压缩的对象(公开页面元素绘制操作的PDF语言源代码).

  2. 还要扩展对象流(ObjStrm).

  3. 规范化数组,字符串等的表示.

  4. 对对象进行重新编号,使它们从1 0 obj文件开始,然后以升序显示.

  5. 修复b0rken xref条目.

  6. 在原始文件中添加包含对象原始标识的注释.

  7. 为每个页面添加评论.

  8. ......还有一些.

在普通文本编辑器中查看这些(现在主要是ASCII)文件比尝试找出原始二进制PDF更容易.