无法获取 VBA 代码来检查 pdf 复选框

Cannot get VBA code to check pdf check box

我正在尝试制作一个程序来读取一个 pdf 和一个 vba 用户表单,然后填写另一个 pdf。我成功地编写了代码来读取 pdf 中的所有文本,然后根据我可以在字符串中找到的标记找到某些子字符串。它旨在根据子字符串填充目标 pdf 中的字段,并根据用户表单检查相应的文本框。我可以获得填充子字符串的代码,然后保存文档,但它不会选中复选框。在代码使用 AVDoc 之前,但我切换到 JSO 因为我不想弹出 pdf,而 jso 成功地避免了这个问题。我尝试了各种代码方法,例如 pdfBool.value = cBool(vbaBool), pdfBool.value = 1, pdfBool.value = "1", jso.setValue(" checked"), jso.setValue("yes"), 等等。这段代码将 运行 而不会崩溃。为了示例,我将变量的数量减少到一个字符串和一个布尔值。

Sub main()

‘findString grabs all text from a pdf file.  This code works.
Dim mystr As String
If findString(mystr) = False Then
    Application.StatusBar = "Cannot find Source PDF"
    Exit Sub
End If

Dim mypath As String
    mypath = ActiveWorkbook.Path & "\destination.pdf"
 
Dim aApp As acrobat.AcroApp
Dim pdfDoc As acrobat.CAcroPDDoc
Dim jso As Object
   
    Set aApp = CreateObject("AcroExch.App")
    Set pdfDoc = CreateObject("AcroExch.PDDoc")

    If pdfDoc.Open(mypath) = True Then

            Set jso = pdfDoc.GetJSObject

        Dim vbaText As String
        Dim vbaBool As String

            vbaText = returnString("Token1")
            vbaBool = userForm.checkBox1.value

        Dim pdfText As Object
        Dim pdfBool As Object

            Set pdfText = jso.getField("TextField1")
            Set pdfBool = jso.getField("CheckBox1")

           pdfText.Value = vbaText
           pdfBool.Value = vbaBool

           'save pdffile
           Dim fileSavePath As String
           fileSavePath = ActiveWorkbook.Path & "\My Save File.pdf"
           pdfDoc.Save PDSaveFull, fileSavePath

           ‘clean up memory

           Set pdfDoc = Nothing
           Set pdfText = Nothing
           Set pdfBool = Nothing
           Set jso = Nothing
    End If

    aApp.Exit
    Set aApp = Nothing
    Unload userForm1

End Sub

好的,经过一番搜索,我找到了解决方案。基本上,使用 Living Cycle 创建的表单不适用于复选框。我问过我组织中的某个人,他们确认 Living Cycle 在表单上使用了一段时间,直到我们摆脱它。老实说,我不知道 Living Cycle 是什么,但解决方案似乎有效,所以我认为无论什么问题都与称为“Living Cycle”的东西有关。

解决办法?重做 pdf 表单:我将 pdf 导出到一个封装的 PostScript 文件。这剥夺了所有领域。之后,我使用了自动找到所有相关字段的准备表单工具。幸运的是,对于我的 pdf,它完美地找到了所有字段,尽管我不得不删除一两个额外的字段。字段名称和代码需要匹配,因此需要对 PDF 或代码进行调整,但一旦我进行了调整,一切就完美了。