如果我不压平PDF文档,为什么我的PDF字段在Adobe Reader中保持空白?

时间:2012-03-09 12:41:33

标签: itextsharp adobe-reader foxit

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

问题在于,当我标记PDF并在Adobe 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是启用阅读器的,我认为即使在保存之后它也会保持这种状态,因为Adobe Reader在打开文件时会显示“扩展”工具箱。这些字段仍然可以编辑。

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

请帮助

2 个答案:

答案 0 :(得分:0)

我有同样的问题,只有在使用带有扩展功能的Adobe Acrobat创建PDF时才会发生这种情况。我找到的唯一选项是重新创建表单,以便弹出框没有理由弹出。 GL

答案 1 :(得分:0)

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

  • 将FormFalttering设置为False并设置RemoveUsageRights()(取决于iText版本)