使用iTextSharp压模填充PDF中的空白字段

本文关键字:空白 字段 PDF 填充 iTextSharp 使用 | 更新日期: 2023-09-27 18:00:02

当我在等待有人创建一个可填写的PDF供我在项目中使用时,我在编写代码时用一个可填的纳税单代替了它。下面的代码填写了税务PDF表格,但当我用我们的可填写PDF表格代替税务表格时,它就不再有效了。我已经验证了字段名称的正确性(通过检查acroFields中的字段)。为什么我的表格不填?(模板是可填写的表格)

        try
        {
            if (!string.IsNullOrWhiteSpace(template))
            {
                pdfMemoryReader = new PdfReader(template);
                pdfMemoryReader.RemoveUsageRights();  // prevents the "This document enabled extended features in Adobe Reader...." message
                PdfStamper pdfMemoryStamper = null;
                try
                {
                    pdfMemoryStamper = new PdfStamper(pdfMemoryReader, memoryStream);
                    AcroFields acroMemoryFields = pdfMemoryStamper.AcroFields;
                    acroMemoryFields = PopulatePDF(studentId, termId, acroMemoryFields, PDFFields);
                    pdfMemoryStamper.FormFlattening = true;
                    pdfMemoryStamper.Writer.CloseStream = false;
                    if (pdfMemoryStamper != null)
                    {
                        pdfMemoryStamper.Close();
                    }
                    memoryStream.Position = 0;
                }
                finally
                {
                    pdfMemoryReader.Close();  //this supposedly closes the underlying stream
                }
            }
        }
        catch
        { }
        return memoryStream;

和PopulatePDF(我也验证了PDF字段。StudentLName有一个值):

        public AcroFields PopulatePDF(Guid studentId, Guid termId, AcroFields acroFields, PDFViewModel PDFFields)
    {            
        SharedInfo(studentId, termId, PDFFields);
        acroFields.SetField("[StudentLName]", PDFFields.StudentLName);
        acroFields.SetField("[StudentFName]", PDFFields.StudentFName);
        acroFields.SetField("[Grade]", PDFFields.StudentFName);
     }

你知道为什么这份新表格不能填吗?为了使用iTextSharp,表单是否需要一些属性?iTextSharp是版本4.1.2.0

使用iTextSharp压模填充PDF中的空白字段

答案是去掉括号。这是由观察窗口"添加"的。