使用iTextSharp填充pdf后无法保存手动编辑的数据

时间:2015-09-03 19:14:36

标签: asp.net-mvc pdf save itextsharp

我成功使用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中的扩展功能   文档自创建和使用扩展功能后已更改   不再被提供。请与作者联系以获取原始版本   这份文件。“

0 个答案:

没有答案