测试C#使用PuppeteerSharp将网页生成PDF文件

  微信公众号“DotNet开发跳槽”、“dotNET跨平台”、“DotNet”发布了几篇将网页生成图片或pdf文件的文章(参考文献2-5),其中介绍了使用puppeteer-sharp、Select.HtmlToPdf、iTextSharp等多种方式实现html转图片或pdf,正好最近有类似的需要(网上的文档没有找到离线版,手动一页页保存成pdf又太费劲),看完上述文章后,个人感觉PuppeteerSharp使用最简单、没什么限制,同时PuppeteerSharp官网的示例和文档也较全,本文学习PuppeteerSharp生成PDF文件的基本用法。
  VS2022新建Winform程序,在Nuget包管理器中搜索并安装PuppeteerSharp包:
在这里插入图片描述
  采用参考文献8中的示例代码进行测试,主要代码及说明如下所示,可以看出最简单的情况下不到10行代码即可导出pdf文件。

// 设置并下载浏览器相关组件,第一次下载可能耗时较长,后续再运行则速度很快
var options = new LaunchOptions { Headless = true };
using var browserFetcher = new BrowserFetcher();
await browserFetcher.DownloadAsync();

//加载指定网址的页面
await using var browser = await Puppeteer.LaunchAsync(options);
await using var page = await browser.NewPageAsync();
await page.GoToAsync(txtUrl.Text);

//将网页输出位指定名称的pdf文件
await page.PdfAsync(Path.Combine(Directory.GetCurrentDirectory(), $"{txtName.Text}.pdf"));

  如果想直接采用网页中的内容设置输出文件名,PuppeteerSharp提供了QuerySelector、GetProperty等函数查找并获取页面元素内容,下列示例查找并获取页面标题元素的内容:

var titleHtml = await page.QuerySelectorAsync("title");
var innerTextHandle = await titleHtml.GetPropertyAsync("innerText");
var innerText = await innerTextHandle.JsonValueAsync();

  调用PdfAsync输出pdf文件时,支持创建PdfOptions示例设置输出选项,主要属性如下图所示,如Format设置页面尺寸、Landscape设置纸张方向、PageRanges设置输出的页码范围、MarginOptions设置页边距等。
在这里插入图片描述
  单个网页生成pdf文件的路线算是通了,后续会再学习基于C#爬取网页链接的文章及代码,目标是能做到自动把网页中链接的页面都能自动生成PDF文件。

参考文献:
[1]https://github.com/hardkoded/puppeteer-sharp
[2]https://www.cnblogs.com/wuyongfu/p/17243490.html
[3]https://blog.csdn.net/sD7O95O/article/details/111771428
[4]https://www.cnblogs.com/hohoa/p/11087198.html
[5]https://blog.csdn.net/sD7O95O/article/details/115300554
[6]https://www.puppeteersharp.com/
[7]https://www.puppeteersharp.com/api/index.html
[8]https://github.com/hardkoded/puppeteer-sharp/blob/master/demos/PuppeteerSharpPdfDemo/Program.cs

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值