【发布时间】:2012-03-12 02:27:54
【问题描述】:
我已经使用 pywin32 在 python 中编写了一个脚本来将 pdf 文件保存为文本,直到最近它工作正常。我在 Excel 中使用类似的方法。代码如下:
def __pdf2Txt(self, pdf, fileformat="com.adobe.acrobat.accesstext"):
outputLoc = os.path.dirname(pdf)
outputLoc = os.path.join(outputLoc, os.path.splitext(os.path.basename(pdf))[0] + '.txt')
try:
win32com.client.gencache.EnsureModule('{E64169B3-3592-47d2-816E-602C5C13F328}', 0, 1, 1)
adobe = win32com.client.DispatchEx('AcroExch.App')
pdDoc = win32com.client.DispatchEx('AcroExch.PDDoc')
pdDoc.Open(pdf)
jObject = pdDoc.GetJSObject()
jObject.SaveAs(outputLoc, "com.adobe.acrobat.accesstext")
except:
traceback.print_exc()
return False
finally:
del jObject
pdDoc.Close()
del pdDoc
adobe.Exit()
del adobe
但是这段代码突然停止工作,我得到以下输出:
Traceback (most recent call last):
File "C:\Documents and Settings\ablishen\workspace\HooverKeyCreator\src\HooverKeyCreator.py", line 38, in __pdf2Txt
jObject.SaveAs(outputLoc, "com.adobe.acrobat.accesstext")
File "C:\Python27\lib\site-packages\win32com\client\dynamic.py", line 505, in __getattr__
ret = self._oleobj_.Invoke(retEntry.dispid,0,invoke_type,1)
com_error: (-2147467263, 'Not implemented', None, None)
False
我有类似的用 VB 编写的代码可以正常工作,所以我猜它与 COM 接口没有正确绑定到适当的函数有关? (我的 COM 知识不完整)。
【问题讨论】:
-
此 PDF 有保存使用权吗? (根据来自 docs 的猜测:“此方法在 Adobe Reader 中适用于具有保存使用权限的文档。)
-
它似乎没有,但我启用了它们并且仍然得到同样的错误。另外我正在使用 adobe acrobat 运行代码。
标签: python com acrobat pywin32 win32com