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 Reader に「拡張」ツールボックスが表示されるため、保存後もそのままであると思います。フィールドは編集可能なままです。

また、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が拡張機能を備えたAdobeAcrobatで作成された場合にのみ発生します。私が見つけた唯一のオプションは、ポップアップボックスがポップアップする理由がないようにフォームを再作成することです。GL

于 2012-06-28T17:13:48.943 に答える