我正在编写一个PDF生成库,并希望添加使用其他PDF作为模板的能力。规范指出,在带有模板对象别名的页面上,应该只需要一个TemplateInstantiated属性。
以下是pdf内容的要点:
https://gist.github.com/tyre/89c12f8203181f078001
qpdf --check将该PDF报告为无效:
WARNING: tmp/alpaca.pdf: file is damaged
WARNING: tmp/alpaca.pdf (file position 32089): xref not found
WARNING: tmp/alpaca.pdf: Attempting to reconstruct cross-reference table
checking tmp/alpaca.pdf
PDF Version: 1.7
File is not encrypted
File is not linearized发布于 2014-11-16 15:09:42
恐怕您的PDF文档已经完全崩溃,并且您误解了一些关键概念。您不能简单地将一个完整的PDF文件合并到另一个PDF文件中,就像您所做的那样,并期望它能够正常工作。
您所指的模板系统打算在交互表单文档(或一般交互文档)的上下文中包含“隐藏”页面--而不是在PDF文件中的页面树中引用。这听起来不像是你想要做的。这些页面需要是有效的PDF页面。换句话说,您不仅可以逐字包含原始的PDF文档,还可以期望PDF阅读器整理清楚;您需要插入一个语法上正确的PDF页面对象。
您要做的是将文档的内容作为文档的背景应用于文档。这通常是使用XObjects完成的。这方面的伪代码可以是:
同样重要的是,不应该简单地将模板文档插入到新创建的XObject的流中。您必须创建一个有效的XObject,其中包含一个格式正确的资源字典,该字典引用XObject所需的所有资源,并包含模板文档中的内容流。
发布于 2014-11-16 14:57:58
正如评论中已经指出的,OP提供的PDF格式在结构上存在缺陷,交叉参考表的位置和条目都是错误的。此外,从一个PDF修订版过渡到下一个更新似乎是有问题的。因此,从本质上讲,OP必须提供至少在语法上正确的PDF示例。
不过,有人说,行动表明他是
编写PDF生成库,并希望添加使用其他PDF作为模板的能力。规范指出,页面上带有模板对象别名的TemplateInstantiatedproperty应该是所需的。
命名页面机制不是针对这种情况的。它目前的主要用途(如果使用它的话)是在Acroform操作生成页面模板的上下文中。
对于使用来自其他PDF的页面,如果要将它们作为单独的页面使用,可以简单地从源PDF复制它们(以及引用的其他对象);如果要将多个模板放到单个目标页面上,则可以将复制的源包装到表单xobjects中,并将它们包含在目标页面中。
https://stackoverflow.com/questions/26954305
复制相似问题