C# Html网页URL转PDF,列印功能

这篇博客对比了两种用于将HTML转换为PDF的.NET库:Select.HtmlToPdf和FreeSpire.PDF。SelectPdf在转换过程中丢失了部分表格样式,但整体样式保持良好;而FreeSpire.PDF虽然能更好地保留样式,但转换速度较慢,可能需要等待10秒左右。开发者可以根据性能和样式需求在这两个库之间做出选择。
摘要由CSDN通过智能技术生成

        断断续续用了很多的DLL,有好几个都没达成我想要的功能:完整的整个网页及完整的样式CSS(可能是我太菜了),有两种达成了差不多完整的效果。

        第一种:NuGet安裝Select.HtmlToPdf并引用SelectPdf  缺点:表格某些(部分)樣式丟失其他样式正常,运行结束之后在bin->Debug里面。

 using SelectPdf;

        static void Main(string[] args)
        {
            string html = @"https://www.baidu.com/";
            //第一種方法:NuGet安裝Select.HtmlToPdf并引用SelectPdf PS:表格某些樣式丟失
            HtmlToPdf toPdf = new HtmlToPdf();
            toPdf.Options.PdfPageSize = PdfPageSize.A4;//A4紙
            toPdf.Options.MarginRight = 1;//右邊距
            toPdf.Options.MarginLeft = 1;//左邊距
            toPdf.Options.WebPageWidth += 200;//調整頁面寬度
            PdfDocument pdf = toPdf.ConvertUrl(html);
            pdf.Save(new Random().Next(1, 100) + "HTML-to-PDF.pdf");//保存文件
            pdf.Close();
            Console.ReadKey();
        }

        第二种:NuGet安裝FreeSpire.PDF并引用Spire.PdfSystem.Threading、Spire.Pdf.HtmlConverter  缺点:要等10秒左右(可能是我的电脑太垃圾的原因运行太慢了,不过这个比起其他方法确实要慢),说实话这个就挺好的了但是生成PDF太慢了。

using Spire.Pdf;
using Spire.Pdf.HtmlConverter;

using System.Threading;

        static void Main(string[] args)
        {
            string html = @"https://www.baidu.com/";

            //第二種方法:NuGet安裝FreeSpire.PDF并引用Spire.PdfSystem.Threading、Spire.Pdf.HtmlConverter PS:要等10左右
            PdfDocument doc = new PdfDocument();
            PdfPageSettings setting = new PdfPageSettings();//创建PdfPageSettings对象用於頁面設置
            setting.Margins = new Spire.Pdf.Graphics.PdfMargins(3);//設置頁面边距
            //setting.Rotate = PdfPageRotateAngle.RotateAngle90;//橫版
            doc.PrintSettings.Landscape = true;
            setting.Size = new System.Drawing.SizeF(750, 750);//设置页面大小
            setting.Width += 200f;
            Thread thread = new Thread(() =>
            {
                doc.LoadFromHTML(html, false, false, false, setting);
            });
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();//阻塞主線程直到子線程結束
            doc.SaveToFile(DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".pdf");
            doc.Dispose();
            doc.Close();
            Console.ReadKey();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值