【发布时间】:2015-09-03 19:14:36
【问题描述】:
我使用 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 中的扩展功能。 文档自创建以来已更改并使用扩展功能 不再被提供。原版请联系作者 这份文件。”
【问题讨论】:
-
请尽可能少地发布代码,以展示您尝试过的方法、有效的方法和无效的方法。
-
听起来好像您期望 PDF 是 Reader-enabled(但这是有根据的猜测)。请搜索Reader-enabling 的文档,如果您的问题与此有关,请告诉我们。
-
我已经详细说明了我的问题..请帮助
标签: asp.net-mvc pdf save itextsharp