我在合并pdf文件后添加了书签。该脚本可以完成此任务,但是由于一种变体,此后Adobe进程不会关闭。 变体名称为“ BMA”。如果将其删除,则该过程将按设计关闭。 我制作了一个脚本来关闭所有进程,但是我想要一个更可靠的解决方案。请帮忙。
Option Explicit
Sub testrun()
Dim aInfo(6) As String
'True = bookmark
'False = child bookmark
aInfo(0) = "True,Index,0"
aInfo(1) = "True,Document_1,1"
aInfo(2) = "False,Attatchment_1,2"
aInfo(3) = "True,Document_2,3"
aInfo(4) = "False,Attatchment_1,4"
aInfo(5) = "False,Attatchment_2,5"
Call NewFixPDF("C:\Temp\Test.pdf", aInfo)
End Sub
Private Sub NewFixPDF(sFile As String, aInfo() As String)
Dim AcroApp As Acrobat.CAcroApp
Dim PDDoc As Acrobat.CAcroPDDoc
Dim jso As Object
Dim BMR As Object, oBMR As Object, oBMA As Object
Dim BMA As Variant
Set AcroApp = CreateObject("AcroExch.App")
Set PDDoc = CreateObject("AcroExch.PDDoc")
Dim a As Integer, b As Integer, i As Integer
Dim aBookmark() As String
Dim bHead As Boolean
Dim sName As String
Dim iPage As Integer
If PDDoc.Open(sFile) = False Then
MsgBox "Can't open file", vbCritical
GoTo Exit_Sub
End If
Set jso = PDDoc.GetJSObject
jso.bookmarkRoot.Remove
Set BMR = jso.bookmarkRoot
Set oBMR = jso.bookmarkRoot
For i = 0 To UBound(aInfo) - 1
aBookmark = Split(aInfo(i), ",")
bHead = aBookmark(0)
sName = aBookmark(1)
iPage = aBookmark(2)
If bHead Then
If InStr(sName, "-") > 0 Then sName = Mid(sName, 3 + Len(sName) - InStr(StrReverse(sName), "-"))
BMR.createchild sName, "this.pageNum = " & iPage, a
BMA = BMR.Children
Set oBMA = BMA(a)
a = a + 1
b = 0
Else
oBMA.createchild sName, "this.pageNum = " & iPage, b
b = b + 1
End If
Next i
If PDDoc.Save(PDSaveFull, sFile) = False Then
MsgBox "Can't add bookmarks", vbCritical
End If
Exit_Sub:
Set BMR = Nothing
Set oBMR = Nothing
Set oBMA = Nothing
PDDoc.Close
AcroApp.Exit
Set AcroApp = Nothing
Set PDDoc = Nothing
Debug.Print "Done"
End Sub