附加的PDF规范

时间:2015-03-10 20:36:48

标签: pdf pdf-generation

我正在编写一些代码,需要能够获取两个pdf并将它们附加到页面级别(例如,如果它们都是2页文档,则有一个4页文档,其中所有4个页面都与原始页面相同)。

不使用库,最好的方法是什么? PDF规范是否简化了这一过程?

1 个答案:

答案 0 :(得分:2)

正如其他人已经提到的,如果您不使用PDF库,将两个PDF文件合并在一起将是一项艰巨的任务。您需要深入了解内部PDF结构。这是PDF规范的链接。这是一个开始的好地方 - PDF Reference

在我详细介绍之前,这是一个合并两个非常简单的PDF文件和结果的小实验。这两个文件各34kb。生成的文件为35kb,它包含每个输入文件的页面。仅这一点就表明,除了合并两个输入文档的代码之外,还有更多内容。比较输入和输出文档的代码,还显示它们已完全重新创建,每个对象具有不同的对象ID。

通常的PDF文档包含标题,正文,交叉引用表和预告片。 读取PDF文档时,库从顶部开始,然后跳转到文档的末尾,向后移动,直到它到达交叉引用表。在此表中,库查找特定文档中的对象和字节偏移量。将新表添加到文档时,将更新或重新创建此表。

要手动合并两个文档,您必须将对象从第二个文档的正文移动到第一个文档中。然后,您可以根据需要更新第一个文档的元数据。这里的艰巨任务是更新,并可能重新创建交叉引用表。您需要实现PDF规范的重要部分才能实现这一目标。

如果您决定在项目中使用库,那么有一些相当轻量级的库可以解决问题。 PDFtk库非常轻量级,可以使用1个命令进行PDF合并。它有免费版本,以及命令行功能。您应该能够设置一个简单的服务器来在您的环境中托管它,然后通过Java Script调用它。

如果您的项目需要的不仅仅是免费库,那么APDFL就是商业PDF处理库。它具有.NET或Java接口,因此您可以轻松创建将为您合并PDF文件的服务器应用程序。