【问题标题】:itextsharp pdf merge form data lostitextsharp pdf合并表单数据丢失
【发布时间】:2014-12-07 21:57:13
【问题描述】:

我有两个 Adob​​e 生命周期设计的表格“F1_0.pdf”和“F1_1.pdf”。两个表单都有一些表单数据。

我正在使用以下代码(itextsharp v5.1.2)合并它们。它以很好的方式将它们合并到生成的文件“Merged_Final.pdf”中。我的问题是:Merged_Final.pdf 文件只有第二个 pdf 的数据,即 F1_1.pdf。 F1_0.pdf 文件的数据不见了。 这是pdf file attachment. 那么,我该如何摆脱这个问题。

public void CombineMultiplePDFs(string[] fileNames, string outFile)
    {
        // step 1: creation of a document-object
        Document document = new Document();

        // step 2: we create a writer that listens to the document
        PdfCopy writer = new PdfCopy(document, new FileStream(outFile, FileMode.Create));
        if (writer == null)
        {
            return;
        }

        // step 3: we open the document
        document.Open();

        foreach (string fileName in fileNames)
        {
            // we create a reader for a certain document
            PdfReader reader = new PdfReader(fileName);
            reader.ConsolidateNamedDestinations();

            // step 4: we add content
            for (int i = 1; i <= reader.NumberOfPages; i++)
            {
                PdfImportedPage page = writer.GetImportedPage(reader, i);
                writer.AddPage(page);
            }

            PRAcroForm form = reader.AcroForm;
            if (form != null)
            {
                writer.CopyAcroForm(reader);
            }

            reader.Close();
        }

        // step 5: we close the document and writer
        writer.Close();
        document.Close();
    }

【问题讨论】:

    标签: pdf pdf-generation itextsharp itext


    【解决方案1】:

    也许您正在尝试做一些不可能的事情:

    如果您的表单是纯 XFA 表单(例如:动态的,而不是混合的,仅由 XML 组成),那么您正在尝试做一些不可能的事情:两种表单可能有不同的数据描述(不同的 @987654323 @) 并且没有任何软件程序(甚至 Adob​​e LiveCycle Designer)可以合并两种不兼容的 XML 类型。

    如果您的表单是纯 XFA 表单,您唯一的选择是:

    • 首先填充它们,将它们展平(= 删除所有交互性),然后合并它们。
    • 创建一个新的 XSD,将两个表单的数据描述结合起来,并使用新的 XSD 作为数据源在 Adob​​e LiveCycle Designer 中手动创建一个新表单。

    也许您正在尝试做一些可能的事情:

    如果您的表单是混合表单(例如:它们还包含基于AcroForm 技术的表单描述),您应该删除 XFA 部分并将 PDF 合并为纯 AcroForm 文档。如何做到这一点,在我对以下问题的回答中进行了解释:Whats the alternative to copyAcroForm?

    【讨论】:

    • 乍一看,OP 的示例文件看起来像混合格式的 PDF。因此,删除 XFA 部分似乎是一个值得研究的选项。
    • 在这种情况下,问题可能会被标记为重复 ;-)
    • @BrunoLowagie:所以,我所做的是:获取我上面的两个 pdf 文件并使用链接中的代码进行合并。但合并后,我没有找到这两种形式的任何数据。 XFA 删除部分是否包含在该链接中,还是我遗漏了一些东西?我是 iText/iTextSharp 的新手。
    • @BrunoLowagie:我还有一个问题,link。如果您有任何意见,对我很有帮助。
    • 在您的另一个问题中,您似乎有一个没有 AcroForm 对应部件的动态 XFA 表单(或者至少您使用的代码假定了这一点)。如果这是真的,那么您正在尝试做一些不可能的事情。你的问题从一开始就不清楚。如果我是你,我会在开始编码之前退后一步研究问题。在您花费更多雇主的时间之前,您应该评估一下您正在尝试做什么。可能吗?还是不可能?从远处很难分辨。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 2013-03-09
    • 2023-03-22
    • 1970-01-01
    • 2011-01-15
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多