我为这个话题浪费了太多时间,所以我在寻求你的帮助 .
我必须使用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
非常感谢您的帮助!