【问题标题】:Blank fields in fillable PDF using iTextSharp stamper使用 iTextSharp 压模可填写 PDF 中的空白字段
【发布时间】:2014-04-24 20:11:04
【问题描述】:

当我在等待有人创建可填写的 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(我也验证了 PDFFields.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 版

【问题讨论】:

  • 您确定您的字段名称中包含括号吗?这似乎既不必要又有点奇怪。此外,如果您实际上没有捕获任何东西,为什么要将整个块包装在 try catch 中?
  • 啊,括号是它!当您在监视窗口中检查“字段”时,它们会用括号显示,所以我认为......做坏事。我还没有完成记录,因此是空的。
  • 好吧,在这种情况下,我会添加它作为答案:)

标签: c# asp.net-mvc itextsharp


【解决方案1】:

答案是去掉括号。监视窗口正在“添加”它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 2018-12-27
    • 2013-01-08
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多