gpt4 book ai didi

python - Python 中的 Adob​​e Acrobat API

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:57 30 4
gpt4 key购买 nike

系统:

Python 3.6
Windows 10

目标:

使用 Adob​​e Acrobat API 使用“另存为”功能将 pdf 保存为 jpeg。

注意:出于我的目的,我不能使用 Wand 或其他包。

资源:

当前代码:

import winerror
import win32com
from win32com.client.dynamic import Dispatch, ERRORS_BAD_CONTEXT

ERRORS_BAD_CONTEXT.append(winerror.E_NOTIMPL)

my_dir = r"path\\to\\example\\"
my_pdf = "example.pdf"

os.chdir(my_dir)
src = os.path.abspath(my_pdf)

pdDoc = Dispatch("AcroExch.PDDoc")
pdDoc.Open(src)

jsObject = pdDoc.GetJSObject()

jsObject.SaveAs(os.path.abspath('./output_example.jpeg'), "com.adobe.acrobat.jpeg")

问题:jsObject 为空
导致以下回溯:

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-26-9c82c454eb2a> in <module>()
----> 1 jsObject.SaveAs(os.path.abspath('./output_example.jpeg'), "com.adobe.acrobat.jpeg")

AttributeError: 'NoneType' object has no attribute 'SaveAs'

错误文档说明:

GetJSObject
Gets a dual interface to the JavaScript object associated with the PDDoc. This allows automation clients full access to both built-in and user-defined JavaScript methods available in the document. For more information on working with JavaScript, see Developing Applications Using Interapplication Communication.

Syntax
LDispatch* GetJSObject();

Returns
The interface to the JavaScript object if the call succeeded, NULL otherwise.

最佳答案

考虑将 AvDoc 对象作为您的一个链接显示其用法的接口(interface),然后从中构建 pdDocjsObject。确保还将进程包装在 try/except/finally block 中,以有效地释放 COM 对象,而不管错误如何。

import os    
import winerror
from win32com.client.dynamic import Dispatch, ERRORS_BAD_CONTEXT

ERRORS_BAD_CONTEXT.append(winerror.E_NOTIMPL)

my_dir = r"C:\\path\\to\\example\\"
my_pdf = "example.pdf"

os.chdir(my_dir)
src = os.path.abspath(my_pdf)

try:
AvDoc = Dispatch("AcroExch.AVDoc")

if AvDoc.Open(src, ""):
pdDoc = AvDoc.GetPDDoc()
jsObject = pdDoc.GetJSObject()
jsObject.SaveAs(os.path.join(my_dir, 'output_example.jpeg'), "com.adobe.acrobat.jpeg")

except Exception as e:
print(str(e))

finally:
AvDoc.Close(True)

jsObject = None
pdDoc = None
AvDoc = None

关于python - Python 中的 Adob​​e Acrobat API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530305/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com