【问题标题】:itextsharp merge pdf files having formsitextsharp合并具有表格的pdf文件
【发布时间】:2014-12-14 12:58:27
【问题描述】:

我正在尝试使用 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.

任何人都可以帮助我并发布一些工作代码方法来连接两个此类 Pdf。 提前谢谢你。

【问题讨论】:

  • 您使用了标签 iTextSharp,但实际上您使用的是 PdfSharp。您可能想要更新您的标签以解决知识渊博的人。
  • 嗨 mkl。我知道..我只是在寻求 PdfSharp 的替代品,在包含表单的 PDF 之间的合并过程中使用 itextSharp(在这种情况下,版本是 v.7)。你能帮帮我吗?
  • “请稍候...”消息似乎表明至少有一个表单是 XFA 表单。我怀疑用于 PDF 合并的 iTextSharp 类是否支持 XFA 表单。
  • 嗨,mkl。正如我对 Bruno Lowagie 的回复,我有两种类型的表格——纯 XFA 和混合表格。那么,在这种情况下,你能提供一些方法来处理这两种表格吗?你知道是否有办法将每一种此类 PDF 转换为普通且不可编辑的文件,然后合并它们?
  • 正如 Bruno 所指出的,如果您有多个具有相同架构的纯 XFA,那么这是一些 XML 改组,对于具有不同架构的纯 XFA 来说是非常困难的。在您的情况下,模式是否不同?

标签: c# pdf merge itextsharp


【解决方案1】:

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

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

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

如果您想合并纯 XFA 表单,您有以下选择:

  1. 如果表单具有相同的架构,则从两个表单中提取 XML 数据,合并 XML 数据并用合并的数据填充一个空表单。这假定您知道 XML 架构并且知道如何合并 XML 数据。
  2. 如果表单没有相同的架构,那么合并表单并保持表单交互将非常困难(如果不是不可能的话):您需要为数据创建一个新架构并基本上创建一个从头开始的新形式。
  3. 如果表单是“混合”的,您可能会很幸运。也就是说:如果它们包含使用这两种技术的表单描述并排在一起。在这种情况下,丢弃表单的 XFA 部分,保留 AcroForm 部分并合并 AcroForm 表单。
  4. 最后,您可以先拼合表单(使用我们的闭源 XFA 工作器),然后合并拼合的 PDF。最终结果将不再是表单。

底线:您的问题的答案范围从 “如果不是由人类完成,您正在尝试做一些不可能的事情”(合并两个基于不同 XML 架构的 XFA 表单)到 “您正在尝试做一些非常简单的事情”(合并两个 AcroForm 表单,可能在删除 XFA 对应部分之后)。

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

【讨论】:

  • 非常感谢您的详细解答。这是我第一次使用 PDF,特别是使用 itextsharp。我有两种类型的表格 - 纯 XFA 和混合。那么,在这种情况下,您能否提供一些方法来处理这两种形式(根据您的解释是选项 1 和 3)?提前谢谢你。
  • Bruno,在我等待您对我之前评论的宝贵回答的同时,您能否告诉我是否有办法将此类 PDF 中的每一个转换为普通且不可编辑的文件,然后合并那些?
  • 使用 XFA Worker 将这些文件转换为 普通、不可编辑的 PDF 文件:itextpdf.com/product/xfa_worker 以编程方式合并混合和纯 XFA 表单可能是不可能的。这样的形式简直太不一样了。
  • Bruno,是否有任何开源解决方案可以将这些文件转换为普通的、不可编辑的 PDF 文件(例如使用 XFA Worker)。我正在为学校工作做一些事情,但没有钱购买这样的许可证:(
  • 不,XFA 规范广泛而复杂。我认识的没有人可以“免费”编写这样的解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-10-22
  • 2013-03-09
  • 2011-04-24
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 2011-01-15
相关资源
最近更新 更多