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 リーダーで。
助けてください