我有两个Adobe生命周期设计表格" 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();
}
答案 0 :(得分:1)
也许您正在尝试做一些不可能的事情:
如果您的表单是纯XFA表单(如:动态,而不是混合,只包含XML),那么您正在尝试做一些不可能的事情:两种表单可能都有不同的数据描述(不同的{{ 1}})并且没有软件程序(甚至不是Adobe LiveCycle Designer)可以合并两种不兼容的XML类型。
如果您的表单是纯XFA表单,则唯一的选项是:
也许您正在尝试做一些可能的事情:
如果您的表单是混合表单(如:它们还包含基于.xsd
技术的表单的说明),则应删除XFA部分并将PDF合并为纯AcroForm文档。如何做到这一点,在我对以下问题的回答中进行了解释:Whats the alternative to copyAcroForm?