我想从我的MS-Access 2003 .mdb项目中填写PDF表单。 PDF是使用Adobe LifeCycle Designer ES 8.2创建的,所有字段均具有重要名称。但是,将要运行PDf填充功能的用户未安装LifeCycle,而仅安装了Adobe Reader 9.5(可能会很快迁移到Adobe Reader X,我希望我的代码能为将来提供一些证明)。

我该如何实施?我在网络上看到的大多数线程都重定向到官方的Adobe SDK文档,当您仅执行VBA时,这完全是一团糟。

谢谢。

最佳答案

合并了几行代码后,终于设法使某些东西工作了。这里是。它与在我的VBA项目中设置为参考的Adobe Acrobat 9.0类型库一起使用。

Dim FileNm, gApp, avDoc, pdDoc, jso

FileNm = "c:\form.pdf" 'File location
Set gApp = CreateObject("AcroExch.app")

Set avDoc = CreateObject("AcroExch.AVDoc")
If avDoc.Open(FileNm, "") Then
    Set pdDoc = avDoc.GetPDDoc()
    Set jso = pdDoc.GetJSObject

    jso.getField("topmostSubform[0].Page1[0].fieldName[0]").value = "myValue"
    pdDoc.Save PDSaveIncremental, FileNm 'Save changes to the PDF document
    pdDoc.Close
End If

'Close the PDF; the True parameter prevents the Save As dialog from showing
avDoc.Close (True)

'Some cleaning
Set gApp = Nothing
Set avDoc = Nothing
Set pdDoc = Nothing
Set jso = Nothing


请注意,topmostSubform[0].Page1[0]是Adobe LiveCycle Designer给主PDF文档的默认名称,而fieldName[0]是字段的名称。如果您有多个具有相同名称的字段,则Adobe LiveCycle Designer会自动添加索引号,以便您轻松浏览各个字段。

关于vba - 从VBA(MS-Access)填写PDF表格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13362014/

10-12 18:52