C# winform 多个panel拼接成一个pdf,panel转图片

这段代码演示了如何使用iTextSharp库在.NET环境中将一组Panel控件转换为PDF,然后将PDF文件内容转换为Base64字符串。它涉及到Bitmap和Graphics的使用来捕获控件的图像,通过调整图片尺寸适应PDF页面,并将这些图片添加到PDF文档中。
摘要由CSDN通过智能技术生成

需要使用iTextSharp这个插件可以在nuget中安装
多个图片拼接成pdf文件的base64位数据

    public static string ConvertPnl2ToPDFScreenBase64(/*Panel*/Panel[] pnl)
        {



            using (MemoryStream ms = new MemoryStream())
            {
                //Document对象:页面对象,就像是HTML里面的页面对象一样,用于操作页面内容和格式。通过Document对象的实例来操作内存中的pdf文件
                Document doc = new Document(iTextSharp.text.PageSize.A4, 45, 25, 45, 25);
                //PdfWriter对象:用于将Document对象写入PDF文件。
                PdfWriter writer = PdfWriter.GetInstance(doc, ms);

                //------------------------------You need to actually write something to the document here...
                doc.Open();

                iTextSharp.text.Image image;
                for (int i = 0; i < pnl.Length; i++)
                {
                    Bitmap bitmap = new Bitmap(pnl[i].Width, pnl[i].Height);
                    pnl[i].DrawToBitmap(bitmap, new System.Drawing.Rectangle(0, 0, pnl[i].Width, pnl[i].Height));//关键步1
                    System.Drawing.Image img = bitmap;//转化为System.Drawing.Image

                    image = iTextSharp.text.Image.GetInstance(img, iTextSharp.text.Color.BLACK);//关键步2

                    //调整边距等格式
                    if (image.Height > iTextSharp.text.PageSize.A4.Height - 25)
                    {
                        //image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
                        image.ScaleToFit(iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height);//测试一下边距!20190816
                    }
                    else if (image.Width > iTextSharp.text.PageSize.A4.Width - 25)
                    {
                        //image.ScaleToFit(iTextSharp.text.PageSize.A4.Width - 25, iTextSharp.text.PageSize.A4.Height - 25);
                        image.ScaleToFit(iTextSharp.text.PageSize.A4.Width, iTextSharp.text.PageSize.A4.Height);//测试一下边距!20190816
                    }
                    image.Alignment = iTextSharp.text.Image.ALIGN_MIDDLE;
 doc.NewPage();//加这个是表示每个图片单独放一页,如果不加就是在一页里面累加

                    bool isSucess = doc.Add(image);//关键步3.
                }


                doc.Close();


                var encodedPDF = Convert.ToBase64String(ms.ToArray());
                return encodedPDF;
            }




        }

只导出单个控件:

Rectangle rect = new Rectangle(0, 0, panel1.Width, panel1.Height);
using (Bitmap bmp = new Bitmap(rect.Width, rect.Height))
{
  this.panel1.DrawToBitmap(bmp, rect);
  bmp.Save(@"D:\test.png");
}

导出整个窗体:

Bitmap bmp= new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(this.Left, this.Top, 0, 0, new Size(this.Width, this.Height));//保存整个窗体为图片
bmp.Save(@"D:\test.png");

导出某个控件及该控件上所有的控件:

Bitmap bmp= new Bitmap(panel2.Width, panel2.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(panel2.PointToScreen(Point.Empty), Point.Empty, panel2.Size);//只保存某个控件
bmp.Save(@"D:\test.png");
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值