itextsharp合并具有表单的pdf文件

时间:2014-10-19 12:26:16

标签: c# pdf merge itextsharp

我正在尝试使用itextsharp来合并两个PDF文件(版本7),两个文件都有表单字段。 当我运行代码时,我收到此错误消息: “无法处理iref流。目前的PDFsharp实现无法处理Acrobat 6引入的PDF功能。” 我尝试了不同的方法,但在我上一次获得PDF但是没有原始文件内容,我得到了一个包含以下信息的文件:

     Please wait... If this message is not eventually replaced by the proper contents of the document, your PDF viewer may not be able to
 display this type of document. You can upgrade to the latest version
 of Adobe Reader for Windows®, Mac, or Linux® by visiting
 http://www.adobe.com/go/reader_download. For more assistance with
 Adobe Reader visit http://www.adobe.com/go/acrreader. Windows is
 either a registered trademark or a trademark of Microsoft Corporation
 in the United States and/or other countries. Mac is a trademark of
 Apple Inc., registered in the United States and other countries. Linux
 is the registered trademark of Linus Torvalds in the U.S. and other
 countries.

任何人都可以帮助我并发布一些工作代码方法来连接这种类型的两个Pdfs。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您要么拥有基于AcroForm技术的表单。在这种情况下,使用PDF对象(如字段词典,窗口小部件注释词典等)来描述字段...这些表单可以轻松合并,无论它们是PDF 1.7,1.6,......

您还可以拥有基于XML Forms Architecture(XFA)的表单,在这种情况下,PDF充当XML流的包含。通常这样的表单从XML模式开始。

基于“您的PDF查看器可能无法显示此类文档”消息,您似乎正在处理XFA表单。

如果要合并纯XFA表单,可以使用以下选项:

  1. 如果表单具有相同的模式,则从两个表单中提取XML数据,合并XML数据并使用合并的数据填充空表单。这假设您知道XML模式,并且您知道如何合并XML数据。
  2. 如果表单没有相同的模式,那么合并表单并保持表单交互将非常困难(如果不是不可能):您需要为数据创建新模式并基本上创建一个从头开始新形式。
  3. 如果表格是“混合”,你可能会很幸运。即:如果它们包含使用两种技术彼此相邻的形式的描述。在这种情况下,丢弃表单的XFA部分,保留AcroForm部分并合并AcroForm表单。
  4. 最后,您可以首先展平表单(使用我们的闭源XFA工作程序),然后合并展平的PDF。最终结果将不再是表格。
  5. 底线:你的问题的答案范围从“你正在尝试做一些不可能做的事情,如果不是由人”(基于不同的XML模式合并两个XFA表单) “你正在尝试做一些非常简单的事情”(合并两个AcroForm表单,可能在删除XFA计数器部分之后)。

    由于您未向我们提供有关表格性质的任何详细信息,因此无法给出确定的答案。