Vb.net 将整个界面导出为PDF

Vb.net 将整个界面导出为PDF,vb.net,winforms,Vb.net,Winforms,我创建了一个包含标签和文本框的简单程序。我添加了一个按钮,将带有标签和文本框的整个界面导出到PDF,但我收到了以下错误消息: 无法将“System.Windows.Forms.Panel”类型的对象强制转换为 'iTextSharp.text.IElement' 您需要将控件转换为位图图像,然后将它们放入PDF Function ControlToPDFImage(ControlToConvert As Windows.Forms.Control) Dim Bmp As Bitmap

我创建了一个包含标签和文本框的简单程序。我添加了一个按钮,将带有标签和文本框的整个界面导出到
PDF
,但我收到了以下错误消息:

无法将“System.Windows.Forms.Panel”类型的对象强制转换为 'iTextSharp.text.IElement'


您需要将控件转换为位图图像,然后将它们放入
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
我编写了这个函数,它将使用
WinForms
控件,将它们转换为位图,然后转换为
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))

我将标记语言从
VBA
更改为
VB.Net
。不同的语言。您可能需要对控件进行位图渲染。请参见。注意,
Control.DrawToBitmap
不能与
RichTextBox
控件一起使用。它不会给出任何错误,但不会呈现控件的内容。在本例中,您需要拍摄控件边界的屏幕截图。参见方法。