我成功使用iTextSharp DLL填写了包含数据库数据的PDF表单。但我的代码打破了Adobe的扩展功能。一旦我使用iTextSharp填写表单,生成的文档就是一个扁平形式,我们无法再次手动填写。
我已经使用以下代码行解决了扁平化问题。
pdfStamper.FormFlattening = false;
现在,当我使用以下代码打开包含db数据的PDF文件时,我可以手动编辑表单:
public ActionResult ViewFile()
{
string fileName = "I9 Form.pdf";
string filenames = string.Concat(Guid.NewGuid().ToString(), ".pdf");
PdfReader pdfReader = new PdfReader(Server.MapPath(String.Format
("~/App_Data/TempletePDF/") + fileName));
MemoryStream stream = new MemoryStream();
PdfStamper pdfStamper = new PdfStamper(pdfReader, stream);
AcroFields formFields = pdfStamper.AcroFields;
formFields.SetField("LastName", "John");
pdfStamper.FormFlattening = false;
pdfStamper.Writer.CloseStream = false;
pdfStamper.Close();
byte[] file = stream.ToArray();
MemoryStream output = new MemoryStream();
output.Write(file, 0, file.Length);
output.Position = 0;
HttpContext.Response.AddHeader
("content-disposition", "inline; filename=form.pdf");
// Return the output stream
return File(output, "application/pdf");
}
我可以使用pdf打印按钮手动输入数据打印文件,但我无法再使用手动输入的数据保存文件。
当我尝试正常打开此保存的文件时。它给我以下错误消息:
“此文档启用了Adobe Acrobat Reader DC中的扩展功能 文档自创建和使用扩展功能后已更改 不再被提供。请与作者联系以获取原始版本 这份文件。“