我为这个话题浪费了太多时间,所以我在寻求你的帮助 .

我必须使用VB.net和iTextSharp(v4.1.2.0)创建PDF,使用PdfPTable和不同数量的表行,包括一个文本框的公式字段和每行一个复选框 . 我能够为文本框创建公式字段,但不能为复选框创建公式字段 . 复选框的表格单元格为空(这些表格单元格中似乎“没有”) .

请在下面找到我的示例代码(而不是从数据库中读取数据我循环12次,因此代码更清晰),我创建复选框的尝试在第3和第4列:

Dim objPdfDocument As New Document(PageSize.A4, 70, 30, 40, 20)

    Dim strPdfDocumentName As String = Application.StartupPath & "\Test.pdf"

    With objPdfDocument
        Dim objPdfWriter As pdf.PdfWriter = pdf.PdfWriter.GetInstance(objPdfDocument, New FileStream(strPdfDocumentName, FileMode.Create))

        .AddCreationDate()
        .AddCreator(My.Application.Info.Title & " - " & My.Application.Info.ProductName)
        .AddProducer()

        .Open()

        Dim objPosTabelle As pdf.PdfPTable = New pdf.PdfPTable(4)
        objPosTabelle.SetWidthPercentage(New Single(3) {75, 150, 150, 150}, PageSize.A4)

        Dim objPdfZelle As pdf.PdfPCell
        Dim objPdfTextField As pdf.TextField, objPdfRadioCheckField As pdf.RadioCheckField, objPdfFormField As pdf.PdfFormField, objPdfEvents As pdf.events.FieldPositioningEvents

        For i As Integer = 1 To 12
            For j As Integer = 1 To 4
                objPdfZelle = New pdf.PdfPCell
                objPdfZelle.FixedHeight = 18

                If j = 1
                    objPdfZelle =  New pdf.PdfPCell(New Phrase("Row " & i.ToString.Trim))

                Elseif j = 2
                    objPdfTextField = new pdf.TextField(objPdfWriter, new Rectangle(100, 100, 100, 100), "TextBox" & i.ToString.Trim)
                    objPdfEvents = new pdf.events.FieldPositioningEvents(objPdfWriter, objPdfTextField.GetTextField())
                    objPdfZelle.CellEvent = objPdfEvents

                Elseif j = 3
                    objPdfRadioCheckField = new pdf.RadioCheckField(objPdfWriter, new Rectangle(100, 100, 100, 100), "RadioCheck" & i.ToString.Trim, "Yes")
                    objPdfRadioCheckField.CheckType = pdf.RadioCheckField.TYPE_CHECK
                    objPdfEvents = new pdf.events.FieldPositioningEvents(objPdfWriter, objPdfRadioCheckField.GetRadioGroup(False, False))
                    objPdfZelle.CellEvent = objPdfEvents

                Elseif j = 4
                    objPdfRadioCheckField = new pdf.RadioCheckField(objPdfWriter, new Rectangle(100, 100, 100, 100), "CheckBox" & i.ToString.Trim, "Yes")
                    objPdfRadioCheckField.CheckType = pdf.RadioCheckField.TYPE_CHECK

                    objPdfFormField = objPdfRadioCheckField.CheckField
                    objPdfFormField.FieldName = "FormFeld" & i.ToString.Trim
                    objPdfFormField.AddKid(objPdfRadioCheckField.RadioField)

                    ' Error: Object could not be converted from  type ""iTextSharp.text.pdf.PdfFormField"" to type ""iTextSharp.text.IElement""
                    'objPdfZelle.AddElement(objPdfFormField)
                End If

                objPosTabelle.AddCell(objPdfZelle)
            Next
        Next

        .Add(objPosTabelle)

        .Close()
    End With

非常感谢您的帮助!