使用Acrobat Reader免费版+VBA提取PDF文本可行性及问题咨询
VBA+Acrobat Reader免费版提取PDF文本可行性解答
核心结论
- 不可行,
AcroPDDoc.GetText()是Adobe Acrobat Pro(专业版)专属的文本提取API,Acrobat Reader免费版不提供该功能支持。
无法调用GetText()的原因
你添加的Adobe Reader Type Library 10仅包含免费版开放的有限接口,文本提取这类高级功能被限制在专业版中,所以即使引用了该库,也找不到GetText()方法。
你的代码问题说明
你编写的代码中尝试调用AcroPDDoc.GetText(i),但该方法在Reader免费版的API中不存在,因此无法正常执行。
Sub ExtractPDFText() Dim AcroApp As New Acrobat.AcroApp Dim AcroAVDoc As New Acrobat.AcroAVDoc Dim AcroPDDoc As New Acrobat.AcroPDDoc Dim numPages As Long Dim text As String Dim i As Long 'Set AcroApp = CreateObject("AcroExch.App") 'Set AcroAVDoc = CreateObject("AcroExch.AVDoc") If AcroAVDoc.Open("foo.pdf", "") Then Set AcroPDDoc = AcroAVDoc.GetPDDoc numPages = AcroPDDoc.GetNumPages For i = 0 To numPages - 1 text = text & AcroPDDoc.GetText(i) Next i ThisWorkbook.Sheets(2).Cells(1, 1) = text AcroAVDoc.Close True End If AcroApp.Exit End Sub
替代方案
如果不想使用Acrobat Pro,可尝试以下免费途径:
- 调用
pdftotext命令行工具:通过VBA的Shell函数执行该工具提取文本,再读取生成的TXT文件 - 利用Excel内置功能:使用“数据>自文件>从PDF”导入文本,可录制宏生成对应的VBA代码
- 使用第三方PDF阅读器API:比如Foxit Reader的COM接口(需确认其免费版是否开放文本提取权限)
内容的提问来源于stack exchange,提问作者skatun
相关产品推荐
相关产品推荐

