姬長信(Redy)

xml-自动填写I-9 PDF XFA表格


早上好.我希望有人可以在这个主题上为我提供帮助.去年,我使用iTextSharp设置了VB.NET程序,用户可以在其中输入信息以填充I9,然后该信息将填充PDF并进行打印.有了新的I9,我遇到了无法确定的困难.

首先,代码不会出错,也不会出错.我得到的结果很差,因为没有填写表格,而是得到一个PDF,其中显示“您要加载的文档需要Adobe Reader 8或更高版本.您可能未安装Adobe Reader …”等.因此,我确保我拥有最新的Reader版本,再试一次,结果相同.

考虑到字段名称结构可能有所变化,我尝试第一次阅读格式/字段. (下面的代码).但是,现在它告诉我没有要读取的字段(AcroFields.Fields.Count = 0).

Private Sub ListFieldNames(pdfTemplate As String)
    Dim pdfTemplate As String = "c:/Temp/PDF/fw4.pdf"
    Dim pdfReader As PdfReader = New PdfReader(pdfTemplate)
    Dim de As KeyValuePair(Of String, iTextSharp.text.pdf.AcroFields.Item)

    For Each de In pdfReader.AcroFields.Fields
        Console.WriteLine(de.Key.ToString())
    Next
End Sub

因此,我开始进行一些搜索,并找到了他们可能已经切换到的另一种PDF结构的参考; XFA.老实说,我仍然没有找到令人满意的文档/样本,但是我确实找到了一些似乎可以在XFA PDF的结构中读取的代码. (下面的代码).我尝试过实际上有2种不同的方法.第一个本质上表明xfaFields中没有xmlNodes.第二个确实找到了一个名为“数据”的节点(这是它找到的唯一一个节点),但是没有找到任何子节点.

Private Sub ReadXfa(pdfTemplate As String)
    pdfReader.unethicalreading = True
    Dim readerPDF As New PdfReader(pdfTemplate)

    Dim xfaFields = readerPDF.AcroFields.Xfa.DatasetsSom.Name2Node

    For Each xmlNode In xfaFields
        Console.WriteLine(xmlNode.Value.Name + ":" + xmlNode.Value.InnerText)
    Next
    'Example of how to get a field value
    '   Dim lastName = xfaFields.First(Function(a) a.Value.Name = "textFieldLastNameGlobal").Value.InnerText


    Dim reader As New PdfReader(pdfTemplate)
    Dim xfa As New XfaForm(reader)
    Dim node As XmlNode = xfa.DatasetsNode()
    Dim list As XmlNodeList = node.ChildNodes()
    For i As Integer = 0 To list.Count - 1
        Console.WriteLine(list.Item(i).LocalName())
        If "data".Equals(list.Item(i).LocalName()) Then
            node = list.Item(i)
            Exit For
        End If
    Next
    list = node.ChildNodes()
    For i As Integer = 0 To list.Count - 1
        Console.WriteLine(list.Item(i).LocalName())
    Next
    reader.Close()
End Sub

https://www.uscis.gov/system/files_force/files/form/i-9.pdf?download=1

上面的链接转到了政府提供的i9 PDF.

所以…我想我有多个问题.最简单的是是否有人完成了此过程/他们是否可以帮助我.除非有人能为我指出有关如何从这个新的PDF文件读取/写入的正确方向,否则那将是惊人的.坦率地说,我什至不确定如何确定他们使用的表单的“类型”-AcroField,XFA,还有其他功能吗?

非常感谢您的时间/帮助!