以下代码先设置一个待查找字符串,用findtext方法查找,然后用createchild方法插入书签。代码的运行环境为Win8.1,Word2010 VBA,Acrobat Pro DC,在本机测试成功。
使用到的主要方法为AVDoc.FindText和BookMark.createChild。
AVDoc.FindText有4个参数:
szText,要查找的字符串
bCaseSensitive,是否区分大小写,正数为区分,0为不区分
bWholeWordsOnly,是否匹配整个单词,正数为匹配,0为不匹配
bReset,查找开始的位置,正数则从第一页开始,0则从当前页开始
BookMark.createChild有3个参数
cName,用户在导航面板中看到的书签的名称。
cExpr,单击书签时要执行的表达式,为JavaScript
nIndex,(可选)在书签的子数组中,创建新子书签的基于0的索引。默认值为0。
Sub Pdf添加书签()
'为某书添加书签
Dim App As New Acrobat.AcroApp
Dim PDoc As New Acrobat.AcroPDDoc, AVDoc As New Acrobat.AcroAVDoc
Dim Jso As Object
Dim BMark As Object '不能声明为Acrobat.AcroPDBookmark,否则createchild方法不可用。
Dim PFile As String, WordTF As String, PageNum As Long
PFile = "F:\指定文件.pdf" '要插入书签的pdf文件
WordTF = "要查找的"
If PDoc.Open(PFile) Then
Set Jso = PDoc.GetJSObject
Set AVDoc = PDoc.OpenAVDoc("") '获得一个可见文档
Jso.bookmarkroot.Remove '移除原有的所有书签
End If
If AVDoc.FindText(WordTF, 0, 0, 1) Then '从第一页开始,如果找到了字符串WordTF一次
PageNum = AVDoc.GetAVPageView.GetPageNum '获得当前页码
Set BMark = Jso.bookmarkroot '设置书签根对象
BMark.createChild WordTF, "this.pageNum=" &PageNum, 0 '创建一个书签
PDoc.Save 1, PFile
End If
PDoc.Close
App.CloseAllDocs
App.Hide
App.Exit
Set AVDoc = Nothing
Set PDoc = Nothing
Set App = Nothing
Set BMark = Nothing
Set Jso = Nothing
End Sub
建议把人工 *** 作步骤,写成按键精灵程序去半自动化完成。vba对pdf处理极弱,python也好不了太多。或者你就把pdf转化成office文件(工具很多,例如Acrobat)再用vba处理。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)