我正在尝试使用以下代码从 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”,现在如果我运行脚本两次,注释就会变平。为什么他们不第一次变平?
更新:
我修改了脚本以获取页数并将其传递给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
但这得到了相同的结果:仅在我运行脚本两次后注释才变平。