【问题标题】:Not able to save manually edited data after filling pdf using iTextSharp使用 iTextSharp 填充 pdf 后无法保存手动编辑的数据
【发布时间】:2015-09-03 19:14:36
【问题描述】:

我使用 iTextSharp DLL 成功填写了包含数据库数据的 PDF 表单。但是我的代码破坏了 Adob​​e 的扩展功能。使用 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 打印按钮打印包含手动输入数据的文件,但我无法再保存包含手动输入数据的文件。

当我试图正常打开这个保存的文件时。它给了我以下错误信息:

“此文档启用了 Adob​​e Acrobat Reader DC 中的扩展功能。 文档自创建以来已更改并使用扩展功能 不再被提供。原版请联系作者 这份文件。”

【问题讨论】:

  • 请尽可能少地发布代码,以展示您尝试过的方法、有效的方法和无效的方法。
  • 听起来好像您期望 PDF 是 Reader-enabled(但这是有根据的猜测)。请搜索Reader-enabling 的文档,如果您的问题与此有关,请告诉我们。
  • 我已经详细说明了我的问题..请帮助

标签: asp.net-mvc pdf save itextsharp


【解决方案1】:

听起来好像您正在填写支持阅读器的表单。在 cmets 中,我提到了 Reader-enabling 的概念:

从这些答案中,您知道启用阅读器是通过引入使用 Adob​​e 拥有的私钥的数字签名来实现的。

您使用PdfStamper 填写表单,创建方式如下:

PdfStamper pdfStamper = new PdfStamper(pdfReader, stream);

这会更改文件并破坏数字签名。结果,Reader-enabling 丢失,如果定义了使用权限(例如手动保存文件),则这些使用权限不再有效。

您可以通过在附加模式下创建PdfStamper 来解决此问题:

PdfStamper stamper = new PdfStamper(pdfReader, stream, '\0', true);

现在原始文件(使用 Adob​​e 的私钥签名的字节)保持不变。您只需添加一些额外的字节。这将保留阅读器启用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-13
    • 2021-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多