1

我使用 iTextSharp 填充 PDF 中的字段。我希望 PDF 在用户打开它时保持可编辑状态(即我不能展平 PDF)。

问题是当我标记 PDF 并在 Adob​​e Reader 中查看值时,字段保持空白。如果我在 PDF 上加盖戳,将其展平,然后查看值,那么这些字段实际上确实具有值。

如何填充字段并保持 PDF 可编辑?

这是我作为 ASP.NET MVC 操作的方法:

public ActionResult GetPdfTWOWithSurname()
{
        PdfHelpers _pdfHelper = new PdfHelpers(Server, Url, "~/Content/newForm.pdf");
        var outStream = new MemoryStream();
    var pdfReader = new PdfReader(_pdfHelper.GetPdfBytes());
        var pdfStamper = new PdfStamper(pdfReader, outStream, '\0', true); //The 'true' value is important. Otherwise the document loses some dynamic features.
    pdfStamper.Writer.CloseStream = false;
    pdfStamper.FormFlattening = false; //Allow editing after close.


    var fields = pdfStamper.AcroFields;

    //Fill in text fields...
        fields.SetField("topmostSubform[0].Page2[0].InvestorDetails_Surname[0]", "This is a surname");
    pdfStamper.Close();

    //Get outStream bytes and return...
    outStream.Seek(0, SeekOrigin.Begin);
    byte[] outBytes = new byte[outStream.Length];
    outStream.Read(outBytes, 0, (int)outStream.Length);

    return File(outBytes, "application/pdf", "ThePdfFileTWO.pdf");
}

请注意,此 PDF 已启用阅读器,我认为即使在保存后它也会保持这种状态,因为当我打开文件时 Adob​​e 阅读器会显示“扩展”工具箱。并且这些字段保持可编辑。

另请注意,PDF 仍可编辑,并且字段具有值...在 FoxitPDF 阅读器中。

请帮忙

4

2 回答 2

0

http://what-when-how.com/itext-5/preserving-the-usage-rights-of-reader-enabled-forms-itext-5/

  • 将 FormFalttering 设置为 False 并设置 RemoveUsageRights() (取决于 iText 版本)
于 2013-03-06T09:50:42.323 回答
0

我有同样的问题,只有当 PDF 是使用具有扩展功能的 Adob​​e Acrobat 创建时才会发生。我发现的唯一选择是重新创建表单,以便弹出框没有理由弹出。总帐

于 2012-06-28T17:13:48.943 回答