使用getFields的Python/Acrobat

2024-04-29 14:40:27 发布

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

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

my_pdf = 'BDV-HCR20-20042-BF.pdf'

src = os.path.abspath(my_pdf)

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

    if AvDoc.Open(src, ""):            
        pdDoc = AvDoc.GetPDDoc()
        jsObject = pdDoc.GetJSObject()
        print(jsObject.getField("topmostSubform[0].DateTimeField6[0]"))
except Exception as e:
    print(str(e))

finally:        
    AvDoc.Close(True)

    jsObject = None
    pdDoc = None
    AvDoc = None

我在excel中编写了一个VBA脚本来检索adobe XFA表单(LiveCycle中制作的pdf)的值,并使用VBA中的JSObject.GetField函数检索每个字段的值

不过,我希望使用python而不是VBA与Adobe进行交互,但我无法确定需要使用什么才能使python/Adobe为我提供字段值。使用https://stackoverflow.com/a/51678639/15639887作为打开acrobat的基础

我打算做的是打开acrobat/pdf,读取字段的值,然后关闭它。对于VBA,我使用jso.GetField()来获取它,但是GetField(任何大写形式)在python中都不起作用。我之所以需要打开acrobat并使用JSO,是因为pdf是XFA文件,我还没有找到一种方法,可以使用任何pdf库从其中一个文件中检索XML数据,而pdf库的格式不难解析

我不能继续使用VBA,因为它更新了一些东西,现在我不能再在任务调度器上使用python启动excel了,所以这是我尝试解决的问题

任何指导都将不胜感激


Tags: importsrcnonepdfosmyvbaexcel