PDF表单与itext合并。c#
我必须把两张PDF表格合并成一张。输入PDF有可填充的字段,输出PDF也应该有相同的字段。我能够做到这一点,但是,当我合并具有相同字段值的PDF时,只有第一个字段作为字段出现,第二个字段变平。(假设pdf 1包含字段“Name”和“Comment1”;pdf 2包含字段“Name”和“Comment2”;当我合并时,在输出pdf中,第二个“Name”字段变平。)PDF表单与itext合并。c#,c#,pdf,itext,C#,Pdf,Itext,我必须把两张PDF表格合并成一张。输入PDF有可填充的字段,输出PDF也应该有相同的字段。我能够做到这一点,但是,当我合并具有相同字段值的PDF时,只有第一个字段作为字段出现,第二个字段变平。(假设pdf 1包含字段“Name”和“Comment1”;pdf 2包含字段“Name”和“Comment2”;当我合并时,在输出pdf中,第二个“Name”字段变平。) 在代码中,您使用的是PdfStamper。这是一个填写表单的类,而不是合并表单的类。使用PdfCopy合并表单: public voi
在代码中,您使用的是
PdfStamper
。这是一个填写表单的类,而不是合并表单的类。使用PdfCopy
合并表单:
public void createPdf(String filename, PdfReader[] readers) throws IOException, DocumentException {
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(filename));
copy.setMergeFields();
document.open();
for (PdfReader reader : readers) {
copy.addDocument(reader);
}
document.close();
for (PdfReader reader : readers) {
reader.close();
}
}
您可以找到完整的代码示例。您必须将其调整为C#(方法名称略有不同,但代码类似)
非常重要的是,不要忘记告诉PdfCopy
您要合并字段,否则表单将不会被复制
您解释说,一个PDF中有一个名为
Name
的字段,另一个PDF中有一个名为Name
的字段。如果合并两个表单,这将导致只有一个值的单个字段Name
。一页上不能有一个字段名称
,另一页上不能有另一个字段名称
。这就是为什么我们还提供了一个重命名字段的示例。你可以找到这个例子。你可能不需要这个例子;我只是为了完整起见才添加它。谢谢Bruno,你的例子帮助很大!!
public void createPdf(String filename, PdfReader[] readers) throws IOException, DocumentException {
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(filename));
copy.setMergeFields();
document.open();
for (PdfReader reader : readers) {
copy.addDocument(reader);
}
document.close();
for (PdfReader reader : readers) {
reader.close();
}
}