[PDF文件全攻略]-PDF二次开发(.NET开发 C++开发 Java PHP)

2009-11-20 20:06:52 来源:华启智能

 
\
 
所谓PDF开发,无非就是根据PDF的文档标准,借助编程语言来创建、编辑PDF文件。这样你就可以编写一个自己用的PDF阅读器什么的,也可以将PDF文件处理功能嵌入到你的项目主程序中。当然很多时候都没有必要自己从头开始一句一句地敲代码,借助框架和开源项目通常可以很快编出一个像样的东西。

PDF标准

PDF/A – 针对长期存档的 PDF 标准

2005 年 9 月,国际标准化组织(ISO)批准了针对存档电子文档的 PDF/A 新标准。根据 ISO 19005-1 标准,PDF/A 是 PDF 的一种变型。它“提供了一种工具,使电子文件在长时间之后依然以一种保留其外观的方式重现,而不管该文件是用什么工具和系统创建、储存或制作的。
这种保留方式使 PDF 文件可自我持续。PDF/A 通过嵌入在文档自身内部显示该文档的信息(内容、颜色、字体、图像,等等),存储这种自我持续。换句话说,PDF/A 文件不要求任何附加的外部信息才能适当地显示。但是,此种格式要存储其自身的持续性,就必须排除某些在诸如电影、音响和透明纸等标准 PDF 文件中的功能。
PDF/A 文件类别分为两部分,PDF/A-1 和 PDF/A-2。第一种类别,PDF/A-1 又进一步分为两个次类,PDF/A-1a 和 PDF/A-1b。PDF/A-1a 和 PDF/A-1b 之间的主要差别在于各自处理文本提取的方式不同。
PDF/A-1a: 此级别,又叫作“遵从级别 A (Level A Conformance)完全服从 ISO 19005-1 标准。此版本包括标签,以便文本可通过包括手握设备在内的多种设备来提取和查看。
PDF/A-1b: 又叫作”遵从级别 B(Level B Conformance)。此类别可算 PDF/A 最低级别的遵从标准。此级别保证文档可在计算机屏幕上显示和查看,但是文本的合法性却没有保障。
PDF/A-2: 这是一种附加于 PDF/A 标准的较新内容,并且仍然处在“技术委员会”的规范过程中。基本上,PDF/A-2 将处理一些附加到 PDF 参考资料(如电子签名)的较新功能。
PDF/A 是一个将使商务和政府机构存储重要文件和档案发生革命性变化的新标准。目前,很多商务机构都通过保存纸张文件的方式存储文件。另一种方式则是使用微缩胶卷和微缩平片存储档案。PDF/A 设计为用一个易于更新、所搜、整理,又效益高、可传送,更好的是可长期持续的单一标准格式,取代所有那些老方式。对于您的业务,这意味着低花费,并以小体积取代在您的档案室里存储体积大的纸张文件和文件夹小体积。另外,因为这是电子格式,您可很容易地将您的存档文件储存在多个位置,使其减少遭受火灾、水灾或任何自然灾害的危险性。

针对印前数据的 PDF/X – A PDF 标准

PDF/X,与 PDF/A 一样,是 PDF 的一个子集。PDF/X 的目的在于为设计员、绘图员、工程师和图像艺术家提供一种可为任何服务提供者正确打印的电子文件格式。PDF/X 使保持完全一致性成为可能,即使文件被人们在多处位置,用不同的机器处理,也一样。 这种格式对大多数网络公司的打印就绪文件传输很理想;这里,打印就绪信息的输送者和接收者并无很强的互相关联。除了为打印任务提供坚实的传送格式之外,PDF/X 还具备其他好处,包括有一个文件查看器,更佳的压缩效果(文件大小更小),支持专色印刷色彩这种识别打印条件(比如哪个文件已就绪)的技术手段,以及更多。不过,也与 PDF/A 一样,PDF/X 的好处也伴随着一些妥协。 比如透明、加密和 JBIG2 压缩等功能在 DF/X 中就是被禁止的。
PDF/X 标准次分为三个类别:
PDF/X-1a: 此标准对于想要保持对打印任务最多控制权的文件发送者很理想。它支持盲送交换信息,并遵从世界上很多地方使用的一般要求。
PDF/X-3: PDF/X-3 和 PDF/X-1a 之间最重要的区别在于事实上 PDF/X-3 文件包含由色彩管理的数据。这意味着任何可以读取 PDF/X-3 文件的工具也均可读取 PDF/X-1a 文件。
PDF/X2: 与前述两种设计来支持盲送交换的格式不同,PDF/X2 对于交换信息是有保护的;信息输送者与接收者之间更多是对话。它是 PDF/X-3 格式的超集,而 PDF/X-3 又是 PDF/X-1a 格式的超集。
PDF/X 标准设计目的在于可在印刷业的多个部门和业务机构之间跨机构应用。如果您处正在打印就绪文件的接收端,请务必弄清楚您可接受的文件类型到底是什么(PDF/X-1a、PDF/X-3 还是 PDF/X2)。还有,只要有 PDF/X 工具的更新版本即升级到新版本很安全,因为新版本可以读取老版本文件。 大多数支持基本功能 PDF 的产品也支持 PDF/X 文件。请务必预先测试任何输入文件,弄清楚它们是否与合适的 PDF/X 版本兼容。而且,如果您是一位印刷商或者出版商,也请弄清楚您的整个工作流程均与 PDF/X 兼容。如果您正在将印刷就绪的数据传送给出版商或印刷商,请仔细考虑您对 PDF/X 子集的选项,以决定哪一个才是对您的业务最好的。最最重要的一点是,PDF/X 旨在提供一种方法,以传输完整的电子文件,并自信地知道这些文件将要顺利通过印前程序,既无错误也无需再加工。

PDF/E

PDF/E 是一种即将使用的标准,主要针对工程技术工业。 尤其是,它针对一些 PDF 技术的一些工程技术界使用的最新功能,包括对象级元数据和 3D 模型。

PDF/UA

“UA” 是“通用可访问性”(Universal Accessibility)二字的首字母缩写。此标准仍处在建设阶段,主要通过扩展“508 条”(Section 508)提供对 PDF 文件的可访问性。PDF/UA 将确保任何用户,无论是否有残疾,均可使用和访问 PDF。

PDF文件结构[下载PDF手册]

文件结构可以分为四方面:
1、首部。用文本编辑器打开的时候就可以看到:%PDF-1.4 这样的字眼,其中最后一位就是PDF文件格式版本号,软件的版本号总要比文件格式的版本号高1,比如说Read 5能打开的内容就是4。
2、文件体。里面有若干个的obj来组成,OBJ这种形式:

  30979 0 obj
  <<
  /Linearized 1
  /O 30982
  /H [ 15061 25084 ]
  /L 9379963
  /E 166967
  /N 978
  /T 8760262
  >>
  endobj

第一个数字就是这个OBJ的顺序号,是为了便于在xref中查找,后面的0是为了区分不同的OBJ,后面就是关键字obj.下面的各行就是属性,/关键字 值 的形式。
3.索引表。
用来索引各个obj在文档中的起始位置,它的形式是:

  xref
  0 211
  0000000000 65535 f
  0000000009 00000 n
  ……
  0000087999 00000 n

4、文件尾。

     trailer
  <<
  /Size 211
  /Root 2 0 R
  /Info 1 0 R
  /ID [<B29FBB52459C4623DB1A90CBFC28381E><B29FBB52459C4623DB1A90CBFC28381E>]
  >>
  startxref
  88019
  %%EOF

其中0,211分别代表这个xref的obj的起始和终止序号。其中0这个是估计是为了程序中好处理所以加了这个(个人英文水平不行,有些地方看不明白),可以不加入这个。下面的各行就代表各个obj在这个文档的起始位置,其中第一串字符(10个)代表起始位置,中间的五个字符也是为了区分用的,现在基本上全为0,后面的字母有两种f代表删除的,n代表要使用的。后面的trailer是对整个xref的摘要,说明里面有多少个OBJ,读的时候从哪个OBJ开始解析,信息节点等,ID是为了让一些文件检索工具能够唯一区分文件。

简单的pdf文件

将下面的内容保存为hello.pdf 即可

  %PDF-1.1
  1 0 obj
  <<
  /Type /Catalog
  /Pages 3 0 R
  /Outlines 2 0 R
  >>
  endobj
  2 0 obj
  <<
  /Type /Outlines
  /Count 0
  >>
  endobj
  3 0 obj
  <<
  /Type /Pages
  /Count 1
  /Kids [4 0 R]
  >>
  endobj
  4 0 obj
  <<
  /Type /Page
  /Parent 3 0 R
  /Resources << /Font << /F1 7 0 R >> /ProcSet 6 0 R
  >>
  /MediaBox [0 0 612 792]
  /Contents 5 0 R
  >>
  endobj
  5 0 obj
  << /Length 44 >>
  stream
  BT
  /F1 24 Tf
  200 400 Td (Hello World) Tj
  ET
  endstream
  endobj
  6 0 obj
  [/PDF /Text]
  endobj
  7 0 obj
  <<
  /Type /Font
  /Subtype /Type1
  /Name /F1
  /BaseFont /Helvetica
  /Encoding /MacRomanEncoding
  >>
  endobj
  xref
  0 8
  0000000000 65535 f
  0000000009 00000 n
  0000000074 00000 n
  0000000120 00000 n
  0000000179 00000 n
  0000000322 00000 n
  0000000415 00000 n
  0000000445 00000 n
  trailer
  <<
  /Size 8
  /Root 1 0 R
  >>
  startxref
  553
  %%EOF

标签:二次开发

相关文章

站内搜索

产品分类

推荐分类

联系我们

  • 点击联系  点击联系
  • 联系华启智能