Python中的Adobe Acrobat API

2024-04-26 23:34:05 发布

您现在位置:Python中文网/ 问答频道 /正文

系统:

Python 3.6
Windows 10

目标:

使用Adobe Acrobat API使用“另存为”功能将pdf保存为JPEG。

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

资源:

Adobe_API_Documentation

Implementation_Example 1

Error_Handling_Issue

VBA_Example

当前代码:

^{pr2}$

问题:

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.

Tags: thetoinapiobjectexamplejavascriptcall
1条回答
网友
1楼 · 发布于 2024-04-26 23:34:05

考虑与AvDoc对象接口,因为其中一个链接显示了它的用法,然后从中构建pdDocjsObject。请确保还将进程包装在try/except/finally块中,以有效地释放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

相关问题 更多 >