【发布时间】: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