iTextSharp を使用して PDF フォーム テンプレートに入力しています。PDF テンプレートに多くのフォーム フィールドがあります。次に、ソフトウェアがフィールドに入力し、テンプレートを新しいファイルに保存します。ただし、新しい PDF ファイルのフィールドは編集できなくなります。
AcroFields.SetField を呼び出した後も一部のフィールドを編集可能にしたいのですが、可能ですか?
回答や提案をありがとう。
iTextSharp を使用して PDF フォーム テンプレートに入力しています。PDF テンプレートに多くのフォーム フィールドがあります。次に、ソフトウェアがフィールドに入力し、テンプレートを新しいファイルに保存します。ただし、新しい PDF ファイルのフィールドは編集できなくなります。
AcroFields.SetField を呼び出した後も一部のフィールドを編集可能にしたいのですが、可能ですか?
回答や提案をありがとう。
PDFStamper オブジェクトで FormFlattening を呼び出します。
' flatten the form to remove editting options, set it to false
' to leave the form open to subsequent manual edits
pdfStamper.FormFlattening = False
テスト コード - マスターのパスはフォームのタイトルにあります:
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
Dim newFile As String = Me.Text.Replace(".pdf", "_Out.pdf")
' create w/overwrite copy of the template
Dim pdfReader As New PdfReader(pdfTemplate)
Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create))
pdfFormFields = pdfStamper.AcroFields
' set form pdfFormFields ' field names are case sensitive
pdfFormFields.SetField("NAME", "Firstname Lastname")
pdfFormFields.SetField("PHONE", "805.555.1212")
'' report by reading values from completed PDF
Dim sTmp As String = "Completed: " + pdfFormFields.GetField("NAME") + " " + _
pdfFormFields.GetField("PHONE")
MessageBox.Show(sTmp, "Finished")
' flatten the form to remove editting options, set it to false
' to leave the form open to subsequent manual edits
pdfStamper.FormFlattening = False
' close the pdf
pdfStamper.Close()
End Sub
VB プロジェクトには、itextsharp.dll (私の場合は \itextsharp-all-5.3.4\itextsharp.dll) への参照が必要です。
iTextSharp.text をインポートします
iTextSharp.text.pdf をインポートします