【发布时间】:2012-02-10 16:57:29
【问题描述】:
我正在尝试合并包含表单数据的 PDF 文件。我在 StackOverflow 上尝试了几个不同的 iTextSharp 示例,但它们都导致相同的行为:合并的第一个 PDF 文档保留其表单数据,但随后的 PDF 文档会丢失其表单数据。我还尝试使用下面的代码在合并之前展平文档,但这只会导致所有表单数据完全丢失。
public static byte[] FlattenPdfForm(byte[] bytes)
{
PdfReader reader = new PdfReader(bytes);
using (MemoryStream stream = new MemoryStream())
{
PdfStamper stamper = new PdfStamper(reader, stream) { FormFlattening = true };
stamper.Close();
reader.Close();
return stream.ToArray();
}
}
我尝试合并的 PDF 文档是从 UPS API 返回的。这是一个示例文档:http://dl.dropbox.com/u/9005746/OriginalPDF.pdf
您对如何在维护表单数据的同时将上述多个 PDF 文件合并为一个 PDF 有什么建议吗?
【问题讨论】:
-
尝试以两种不同的方式合并您在上面链接的测试文档:[1] 像您尝试的那样展平,以及 [2] 重命名各个表单字段。得出了和你一样的结果。您有 PDF 验证器吗? iText[Sharp] 不能很好地处理 border PDF - 不符合 PDF 规范的 PDF。您的测试 PDF 是我遇到的第一个我无法与 iTextSharp 合并的 PDF。
-
IText merge documents with acrofields(如果您想合并表单并保持交互性)和iText 5.5 fails to fill form 的可能副本,如果您想知道为什么字段内容在展平后会丢失。
标签: c# pdf pdf-generation itextsharp