以下代码将打开并保存有问题的测试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
答案 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