次のコードを使用して、VBA から Acrobat Javascript API を呼び出して、ドキュメント内のすべての注釈を平坦化しようとしています。
Sub flattenPDF()
Dim AcroApp As Acrobat.AcroApp
Dim AcroDoc As Acrobat.AcroPDDoc
Dim jso As Object
Dim path As String
path = "C:\Users\userID\Desktop\thisfile.pdf"
Set AcroApp = CreateObject("AcroExch.App")
Set AcroDoc = CreateObject("AcroExch.PDDoc")
AcroDoc.Open path
Set jso = AcroDoc.GetJSObject
jso.flattenPages
AcroDoc.Save PDSaveFull, path
AcroDoc.Close
AcroApp.Exit
End Sub
コードは正常に実行されますが、PDF を開くと、すべての注釈を編集できます。
編集: の最初のパラメーターをAcroDoc.Save
「1」から「PDSaveFull」に変更しました。スクリプトを 2 回実行すると、注釈が平坦化されます。最初に平らにしないのはなぜですか?
アップデート:
ページ数を取得してflattenPages()
joelgaraci の提案に従って渡すようにスクリプトを変更し、PDF パスを関数に渡しました。
Sub flattenPDF(pdfPath As String)
Dim AcroApp As Acrobat.AcroApp
Dim AcroDoc As Acrobat.AcroPDDoc
Dim pageCount As Integer
Dim jso As Object
Set AcroApp = CreateObject("AcroExch.App")
Set AcroDoc = CreateObject("AcroExch.PDDoc")
AcroDoc.Open pdfPath
pageCount = AcroDoc.GetNumPages
Set jso = AcroDoc.GetJSObject
jso.flattenPages 0, pageCount - 1
AcroDoc.Save PDSaveFull, pdfPath
AcroDoc.Close
AcroApp.Exit
End Sub
しかし、これでも同じ結果が得られました。スクリプトを 2 回実行した後でのみ、注釈が平坦化されました。