「PDFのフィールドに値を入力した後、読み取り専用にするにはどうしたら良いか?」、という質問を頂きました。
フィールドを操作するマクロについては、何年か前に記事を書いています。
Acrobat JavaScriptのFieldオブジェクトには、そのものズバリの「readonly」プロパティが用意されているので、上記記事のコードのようにGetJSObjectメソッド経由で設定できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 'Acrobat JavaScriptでフィールド操作 Public Sub Sample() Dim app As Object Dim avdoc As Object Const PDSaveFull = &H1 Const PdfFilePath As String = "C:\Test\PDF\入力フォームサンプル.pdf" 'PDFファイルのパス Set app = CreateObject( "AcroExch.App" ) Set avdoc = CreateObject( "AcroExch.AVDoc" ) If avdoc.Open(PdfFilePath, "" ) = True Then app.Show 'Acrobat表示 With avdoc.GetPDDoc.GetJSObject .getField( "氏名" ).Value = "手巣都 花子" With .getField( "年齢" ) .Value = "25" . ReadOnly = True '「年齢」フィールドだけ読み取り専用に設定 End With .getField( "連絡先" ).Value = "XXX-XXXX-XXXX" End With avdoc.GetPDDoc.Save PDSaveFull, "C:\Test\PDF\(入力済み)入力フォームサンプル.pdf" '別名保存 avdoc.Close 1 '文書を保存せずに閉じる app.Hide: app. Exit End If End Sub |
あるいは下記のようにAFormAppオブジェクト経由で処理することもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 'AFormAppオブジェクトでフィールド操作 Public Sub Sample2() Dim app As Object Dim avdoc As Object Const PDSaveFull = &H1 Const PdfFilePath As String = "C:\Test\PDF\入力フォームサンプル.pdf" 'PDFファイルのパス Set app = CreateObject( "AcroExch.App" ) Set avdoc = CreateObject( "AcroExch.AVDoc" ) If avdoc.Open(PdfFilePath, "" ) = True Then app.Show 'Acrobat表示 With CreateObject( "AFormAut.App" ) 'AFORMAUTLib.AFormApp With .Fields .Item( "氏名" ).Value = "手巣都 花子" With .Item( "年齢" ) .Value = "25" .IsReadOnly = True End With .Item( "連絡先" ).Value = "XXX-XXXX-XXXX" End With End With avdoc.GetPDDoc.Save PDSaveFull, "C:\Test\PDF\(入力済み)入力フォームサンプル.pdf" '別名保存 avdoc.Close 1 '文書を保存せずに閉じる app.Hide: app. Exit End If End Sub |
この記事へのコメントはありません。