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

2024-02-26 01:44

本文主要是介绍测试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

这篇关于测试C#使用PuppeteerSharp将网页生成PDF文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/747351

相关文章

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

C# LiteDB处理时间序列数据的高性能解决方案

《C#LiteDB处理时间序列数据的高性能解决方案》LiteDB作为.NET生态下的轻量级嵌入式NoSQL数据库,一直是时间序列处理的优选方案,本文将为大家大家简单介绍一下LiteDB处理时间序列数... 目录为什么选择LiteDB处理时间序列数据第一章:LiteDB时间序列数据模型设计1.1 核心设计原则

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp

Java 正则表达式的使用实战案例

《Java正则表达式的使用实战案例》本文详细介绍了Java正则表达式的使用方法,涵盖语法细节、核心类方法、高级特性及实战案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、正则表达式语法详解1. 基础字符匹配2. 字符类([]定义)3. 量词(控制匹配次数)4. 边

Python Counter 函数使用案例

《PythonCounter函数使用案例》Counter是collections模块中的一个类,专门用于对可迭代对象中的元素进行计数,接下来通过本文给大家介绍PythonCounter函数使用案例... 目录一、Counter函数概述二、基本使用案例(一)列表元素计数(二)字符串字符计数(三)元组计数三、C

Java+AI驱动实现PDF文件数据提取与解析

《Java+AI驱动实现PDF文件数据提取与解析》本文将和大家分享一套基于AI的体检报告智能评估方案,详细介绍从PDF上传、内容提取到AI分析、数据存储的全流程自动化实现方法,感兴趣的可以了解下... 目录一、核心流程:从上传到评估的完整链路二、第一步:解析 PDF,提取体检报告内容1. 引入依赖2. 封装

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送