5

我正在使用 LibreOffice 4.1.3.2 生成可填写的 PDF:

  1. 创建了 Writer 文档
  2. 设置一些文本和测试字段
  3. 导出为 PDF

使用 Acrobar Reader 打开 pdf 文件会显示正确的可填写 pdf。
接下来我使用 iTextSharp 5.4.5 填充字段并保存扁平化文档:

var pdf = new PdfReader(srcFilename);
using (var fw = new FileStream(dstFilename, FileMode.Create))
{
    var stamper = new PdfStamper(pdf, fw);
    var f = stamper.AcroFields;

    f.SetField("field1", "John Doe");
    f.SetField("field2", "12/04/2013");
    stamper.FormFlattening = true;
    stamper.Close();
}
pdf.Close();

问题是填充的字段值在新文档中完全消失了!
我以为没有找到或填写字段,但发现stamper.FormFlattening = true保存的 pdf 中有评论字段值!
当然,我需要一个扁平化的pdf...

有解决方案吗?

4

2 回答 2

16

使用 Open Office 创建表单时,Open Office 会设置一个标志,告诉 iText 不要创建外观。如果您查看FillDataSheet示例,您会看到我们使用以下行覆盖了它:

fields.setGenerateAppearances(true);

在您的特定 C# 代码段中,这将是:

f.GenerateAppearances = true;

在设置字段之前设置此值很重要,否则将不会创建外观。

于 2013-12-11T18:30:29.173 回答
0

添加以下行后,它与我一起工作:

f.SetNeedAppearances(true);
于 2021-02-20T20:13:07.533 回答