我创建了一个包含Labels和TextBoxes的简单程序。我添加了一个按钮,将带有标签和文本框的整个界面导出到PDF
,但出现以下错误消息:
无法将类型为'System.Windows.Forms.Panel'的对象强制转换为类型 'iTextSharp.text.IElement'。,
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim pdfDoc As New Document()
Dim pdfWrite As PdfWriter = PdfWriter.GetInstance(pdfDoc, New FileStream("C:\Users\Win 10\Desktop\simple.pdf", FileMode.Create))
pdfDoc.open()
pdfDoc.Add(Panel1)
pdfDoc.Add(Panel2)
pdfDoc.Add(TextBox1)
pdfDoc.Add(TextBox2)
pdfDoc.Close()
End Sub
答案 0 :(得分:2)
您需要将控件转换为位图图像,然后将其放入PDF
。
我编写了此函数,它将使用WinForms
控件,将其转换为Bitmap,然后转换为iTextSharp.text.Image
格式,然后可以将其放置在PDF
内。
Function ControlToPDFImage(ControlToConvert As Windows.Forms.Control)
Dim Bmp As Bitmap = New Bitmap(ControlToConvert.Width, ControlToConvert.Height)
ControlToConvert.DrawToBitmap(Bmp, New Drawing.Rectangle(0, 0, Panel1.Width, Panel1.Height))
Dim PDFImg As Image = iTextSharp.text.Image.GetInstance(Bmp, System.Drawing.Imaging.ImageFormat.Png)
Return PDFImg
End Function
因此,如果您将代码更改为此,它应该可以工作:
pdfDoc.Add(ControlToPDFImage(Panel1))
pdfDoc.Add(ControlToPDFImage(Panel2))
pdfDoc.Add(ControlToPDFImage(TextBox1))
pdfDoc.Add(ControlToPDFImage(TextBox2))