我正在将现有的应用程序从Java移植到C#。原始应用使用IText库填充PDF表单模板,并将其另存为新的PDF。我的C#代码(示例)如下:

string templateFilename = @"C:\Templates\test.pdf";
string outputFilename = @"C:\Output\demo.pdf";

using (var existingFileStream = new FileStream(templateFilename, FileMode.Open))
{
    using (var newFileStream = new FileStream(outputFilename, FileMode.Create))
    {
        var pdfReader = new PdfReader(existingFileStream);
        var stamper = new PdfStamper(pdfReader, newFileStream);

        var form = stamper.AcroFields;
        var fieldKeys = form.Fields.Keys;

        foreach (string fieldKey in fieldKeys)
        {
            form.SetField(fieldKey, "REPLACED!");
        }

        stamper.FormFlattening = true;
        stamper.Close();
        pdfReader.Close();
    }
}

只有我省略了
stamper.FormFlattening = true;

行,但随后这些表单将显示为...表单。
当我添加此行时,设置到表单字段的所有值都会丢失,从而导致形成空白表单。我真的很感谢任何建议。

最佳答案

在使用 iTextSharp 5.4.4(或更高版本)时,您很可能可以通过强制 iTextSharp 为表单字段生成外观来解决此问题。在您的示例代码中:

var form = stamper.AcroFields;
form.GenerateAppearances = true;

关于c# - ITextSharp PDFTemplate FormFlattening删除填充的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18925311/

10-13 03:15