Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# itextsharp合并具有表单的pdf文件_C#_Pdf_Merge_Itextsharp - Fatal编程技术网

C# itextsharp合并具有表单的pdf文件

C# itextsharp合并具有表单的pdf文件,c#,pdf,merge,itextsharp,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 d

我试图使用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。
提前谢谢。

您可以使用基于AcroForm技术的表单。在这种情况下,使用PDF对象(如字段字典、小部件注释字典等)描述字段。。。这些表单可以很容易地合并,不管它们是PDF 1.7、1.6、

您还可以使用基于XML表单体系结构(XFA)的表单,在这种情况下,PDF充当XML流的包含格式。这种表单通常从XML模式开始

根据“您的PDF查看器可能无法显示这种类型的文档”消息,您似乎正在处理XFA表单

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

  • 如果两个表单具有相同的模式,则从两个表单提取XML数据,合并XML数据并用合并的数据填充空表单。这假设您知道XML模式,并且知道如何合并XML数据
  • 如果表单没有相同的模式,那么合并表单并保持表单交互将非常困难(如果不是不可能的话):您需要为数据创建一个新的模式,基本上从头创建一个新表单
  • 如果表格是“混合的”,你可能会很幸运。也就是说:如果它们包含使用这两种技术的表单描述,那么它们彼此相邻。在这种情况下,丢弃表单的XFA部分,保留AcroForm部分并合并AcroForm表单
  • 最后,您可以首先展平表单(使用我们的封闭源代码XFA worker),然后合并展平的PDF。最终结果将不再是一种形式
  • 一句话:对您的问题的回答从“如果不是由人做的话,您正在尝试做一些不可能的事情”(根据不同的XML模式合并两个XFA表单)到“您正在尝试做一些非常简单的事情”(可能在删除XFA计数器部分后合并两个AcroForm表单)


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

    您使用了标签iTextSharp,但实际上使用了PdfSharp。你可能想更新你的标签来称呼知识渊博的人。嗨,mkl。我知道..我只是想找一个PdfSharp的替代品,在这个包含表单的PDF之间的合并过程中使用itextSharp(本例中的版本是v.7)。您能帮助我吗?“请稍候…”消息似乎表明至少有一个表单是XFA表单。我怀疑用于PDF合并的iTextSharp类是否支持XFA forms.Hi mkl。正如我回复Bruno Lowagie时所说,我有两种类型的表单——纯XFA和混合型。因此,在本例中,您能提供一些方法来处理这两种形式吗?你知道有没有办法将这类PDF中的每一个都转换成一个普通的、不可编辑的文件,然后合并这些文件?正如Bruno所指出的,如果有多个纯XFA使用相同的模式,这是一种XML混乱,对于具有不同模式的纯XFA来说是非常困难的。在您的情况下,模式是否有所不同?非常感谢您伟大而详细的回答。这是我第一次使用PDF,特别是itextsharp。我有两种类型的表单-纯XFA和混合型。因此,在本例中,您能否为我提供一些处理这两种表单的方法(根据您的解释是选项1和3)?先谢谢你。布鲁诺,在我等待你对我之前评论的宝贵回答时,你能告诉我是否有办法将每一种PDF文件转换为普通和不可编辑的文件,然后合并这些文件吗?将这些文件转换为普通文件,不可编辑的PDF文件是使用XFA Worker完成的:以编程方式合并混合表单和纯XFA表单可能是不可能的。Bruno,有没有开源的解决方案可以将这些文件转换成普通的、不可编辑的PDF文件(比如使用XFA Worker)。我正在为学校的工作做一些事情,没有钱购买这样的许可证:(不,XFA规范是广泛而复杂的。我认识的任何人都不能“免费”编写这样的解决方案。