objJSO.importXFAData不将数据写入PDF表单

时间:2017-08-10 17:27:42

标签: excel-vba pdf vba excel

以下代码将打开并保存有问题的测试PDF,但不会写入已保存表单中引用的XML文件中的任何值。 PDF是由Livecycle创建的,因此代码中的XFA引用。对于我的生活,我无法弄清楚为什么这个命令没有执行,如果它有点错误就不会返回错误。

    Sub LoopTrial()

Dim strPDFPath As String
Dim MyFile As String

    MyPath = "H:\Testing\Forms\"

strPDFPath = "H:\Testing\Test Form.pdf"

myExtension = "1.xml"


MyFile = MyPath & myExtension

'Loop
'Do While MyFile <> ""

        Set objAcroApp = CreateObject("AcroExch.App")
        Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
        If objAcroAVDoc.Open(strPDFPath, "") = True Then
            Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
            Set objJSO = objAcroPDDoc.GetJSObject
        End If


    objJSO.importXFAData MyFile

    i = i + 1
   strPDFOutPath = "H:\Testing\Forms\Form" & i & ".pdf"
   objAcroPDDoc.Save 1, strPDFOutPath
   objAcroApp.Exit

'Loop

End Sub

1 个答案:

答案 0 :(得分:0)

出于安全原因,仅在批处理和控制台事件中允许importXFAData方法。您将无法通过VBA直接执行它。您需要先创建一个受信任的函数,然后将其作为应用程序级JavaScript加载,然后调用受信任的函数。您还需要将作为JSO参数的路径从Windows格式转换为Acrobat JavaScript将理解的路径......类似......

“C /富/ data.xfa”

...为

“C:\ FOO \ data.xfa”

要创建受信任的函数,请创建JavaScript(.js)文件并将其加载到Acrobat应用程序JavaScript文件夹中。它看起来像这样......

trustedImportXFAData = app.trustedFunction( function (pathToXFA)
{
      // Additional code may appear above
      app.beginPriv();    // Explicitly raise privilege
      this.importXFAData(pathToXFA); //"this" being the form document
      app.endPriv();
      // Additional code may appear below.
})

来自VBA的你会以同样的方式称呼它。

objJSO.trustedImportXFAData MyFile