使用node将页面转为pdf?(puppeteer实现)

本文章适合win系统下实验(linux,mac可能会出现些莫名其妙的bug我也不会解决)

具体过程

  • 首先了解什么时无头浏览器
  • 启动无头浏览器
  • 打开指定的url页面
  • 设置导出pdf格式
  • 开始转化
  • 完整基础代码

首先了解什么时无头浏览器

没有界面的浏览器

下载puppeteer

npm i puppeteer

下载中可能会出现文件,中途不要暂停,这个不用管
在这里插入图片描述

启动无头浏览器

  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox', '--enable-accelerated-2d-canvas', '--enable-aggressive-domstorage-flushing'],ignoreHTTPSErrors: true,headless: true,timeout: 60000,});

打开指定的url页面

 const page = await browser.newPage();await page.setViewport({width: 640,height: 480,deviceScaleFactor: 1,});//将调整页面大小。许多网站不希望手机改变大小,因此你应该在导航到页面之前设置视口。let waitUntil;;waitUntil = 'networkidle0';await page.goto(url, { waitUntil });
waitUntil = 'networkidle0';
这个参数就是当网络在一定时间内不在请求时开始执行(进入一个网页肯定会加载相应的js,css文件)

设置导出pdf格式

 const options = {//纸张尺寸// format: 'A4',width: '800px',height: '1130px',//打印背景,默认为falseprintBackground: true,//不展示页眉displayHeaderFooter: true,//页眉与页脚样式,可在此处展示页码等headerTemplate: '',footerTemplate: '',path: filePath  //指定生成的pdf文件存放路径};

开始转化

  await page.pdf(options);//关闭页面page.close();//关闭 chromiumbrowser.close();

完整基础代码

直接放在index.js文件里

const puppeteer = require('puppeteer');async function generatePdf(url, filePath) {//启动无头浏览器const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox', '--enable-accelerated-2d-canvas', '--enable-aggressive-domstorage-flushing'],ignoreHTTPSErrors: true,headless: true,timeout: 60000,}); //PDF 生成仅在无界面模式支持, 调试完记得设为 trueconst page = await browser.newPage();await page.setViewport({width: 640,height: 480,deviceScaleFactor: 1,});//将调整页面大小。许多网站不希望手机改变大小,因此你应该在导航到页面之前设置视口。let waitUntil;;waitUntil = 'networkidle0';await page.goto(url, { waitUntil });await page.waitForSelector('.mod-article-content');//等到这个元素出现时开始转化//导出PDF的格式const options = {//纸张尺寸// format: 'A4',width: '800px',height: '1130px',//打印背景,默认为falseprintBackground: true,//不展示页眉displayHeaderFooter: true,//页眉与页脚样式,可在此处展示页码等headerTemplate: '',footerTemplate: '',path: filePath  //指定生成的pdf文件存放路径};await page.pdf(options);//关闭页面page.close();//关闭 chromiumbrowser.close();
}
generatePdf('https://cloud.tencent.com/developer/article/1417076', 'a.pdf')  

然后启动node index.js
接着你会发现多了一个a.pdf文件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/23773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab使用教程(92)—流线图、流带图和流管图

1.使用向量数据显示流线图 MATLAB 向量数据集 wind 代表北美地区的气流。本示例结合使用了几种方法: 利用流线跟踪风速 利用切片平面显示数据的横截面视图 利用切片平面上的等高线提高切片平面着色的可见性 1.1确定坐标的范围 加载数据并确定用来定位切片平面…

module ‘sys‘ has no attribute ‘setdefaultencoding‘

解释: 在Python 3.3之后,sys模块中不再提供setdefaultencoding()函数。这是因为Python 3.3开始,默认编码行为被明确定义为UTF-8,并且不再需要手动设置默认编码。 如果你的代码中出现了这个错误,很可能是因为你正在尝…

探索Linux中的zgrep命令:强大的文本搜索工具

探索Linux中的zgrep命令:强大的文本搜索工具 在Linux系统中,文本搜索和处理是一项日常任务。当我们需要在一个或多个文件中查找特定的字符串或模式时,通常会使用诸如grep这样的工具。然而,当涉及到压缩文件(如gzip压缩…

SpringBoot发邮件服务如何配置?怎么使用?

SpringBoot发邮件需要的参数?邮件发送性能如何优化? 在SpringBoot项目中配置发邮件服务是一个常见的需求,它允许我们通过应用程序发送通知、验证邮件或其他类型的邮件。AokSend将详细介绍如何在SpringBoot中配置发邮件服务。 SpringBoot发邮…

element-ui表格跨页选择数据

element-ui表格跨页选择 1.template部分2.js部分3.全部代码 1.template部分 为table组件添加ref‘table’绑定数据源 :data‘list’添加select和select-all事件&#xff08;事件处理函数为handleSelect&#xff09; <template><div><el-table reftable :data&…

qmt量化交易策略小白学习笔记第17期【qmt编程之获取对应周期的北向南向数据--方式1:内置python】

qmt编程之获取对应周期的北向南向数据 qmt更加详细的教程方法&#xff0c;会持续慢慢梳理。 也可找寻博主的历史文章&#xff0c;搜索关键词查看解决方案 &#xff01; 感谢关注&#xff0c;咨询免费开通量化回测与获取实盘权限&#xff0c;欢迎和博主联系&#xff01; 获取…

java+SimpleRegression 线性模型,针对采集到的大数据设备温度,对设备温度做出预测

首先,让我们通过以下表格展示预测模型开发 Java 的整体流程: 步骤 描述 1 数据收集与清洗 2 特征工程处理 3 模型选择与训练 4 模型评估与调优 5 模型应用与部署 然后引入java的类库 org.apache.commons.math3 math使用原则 math3可谓是轻量级自容器…

小程序开发平台版源码系统——社区论坛小程序功能 带完整的安装代码包以及搭建教程

系统概述 这款社区论坛小程序源码系统是一款功能强大、易于使用的开发平台版源码系统。它采用先进的技术架构&#xff0c;结合了丰富的功能模块&#xff0c;能够满足不同用户的需求。该系统具有高度的可扩展性和灵活性&#xff0c;能够根据用户的需求进行定制化开发&#xff0…

【ffmpeg】本地格式转换 mp4转wav||裁剪mp4

个人感受&#xff1a;太爽了&#xff01;&#xff01;&#xff01;&#xff08;可能用惯了转换网站和无良的转换软件&#xff09; ———— 使用FFmpeg把mp4文件转换为WAV文件 - 简书 (jianshu.com) FFMPEG 视频分割和合并 - 简书 (jianshu.com) ———— 示例 ffmpeg -i …

Qwen2开源发布!0.5B到72B,显著提升!

Qwen2是一个开源的自然语言处理模型&#xff0c;它从0.5B到72B参数规模的显著提升&#xff0c;代表着自然语言处理技术的重大进步。Qwen2的发布&#xff0c;意味着我们可以期待模型在各项自然语言处理任务上&#xff0c;如文本生成、文本分类、机器翻译等&#xff0c;都会有更加…

Qt 窗口居中显示

Qt 窗口居中显示 引言一、窗体的setGeometry函数二、计算屏幕中心然后move三、借助QRect计算四、补充知识点 引言 窗口居中可以提供良好的视觉效果、突出重点内容、提升用户导航和操作的便利性&#xff0c;有助于改善用户体验。 Qt一般情况下&#xff0c;其Mainwindow或弹出的…

咖啡机器人如何精准控制液位流量

在如今快节奏的生活中&#xff0c;精确控制液位流量的需求愈发迫切&#xff0c;特别是在咖啡机器人等精密设备中。为了满足这一需求&#xff0c;工程师们不断研发出各种先进的技术&#xff0c;以确保液体流量的精准控制。其中&#xff0c;霍尔式流量计和光电式流量计就是两种常…

【Spring Cloud】Gateway 服务网关核心架构的执行流程和断言

文章目录 基本概念执行流程断言内置路由断言工厂自定义路由断言工厂 总结 基本概念 路由(Route)是gateway中最基本的组件之一&#xff0c;表示一个具体的路由信息载体。主要定义了下面的几个信息&#xff1a; id&#xff1a;路由标识符&#xff0c;区别于其他Route。uri&…

论文合集整理推荐2024.6.4

论文合集整理推荐2024.6.4 原创 小王搬运工 时序课堂 2024-06-04 20:12 四川 ‍2012年论文合集&#xff1a;论文入口 ‍2019年论文合集&#xff1a;论文入口 2021年论文合集&#xff1a;论文入口 2022年论文合集&#xff1a;论文入口 2023年论文合集&#xff1a;论文入口…

carbondata入库数据查询异常排查

1&#xff0c;背景&#xff1a;carbondata的入库segments对应的状态都是success&#xff0c;但是查询的时候报错&#xff0c; 2&#xff0c;排查内容 1&#xff0c;segments的状态 success 2&#xff0c;任务执行记录日志 正常 3&#xff0c;找到对应查询的天&#xff0c;指定对…

8255A-LED

DATA SEGMENTPORTA EQU 280H ;A端口地址PORTB EQU 281H ;B端口地址PORTD EQU 283H ;命令口地址 DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX, DATAMOV DS, AXMOV DX, PORTDMOV AL, 10010000BOUT DX,ALMOV DX, 281H MOV AL, 00HOUT DX, ALWAIT1:MOV DX, POR…

【JavaEE精炼宝库】多线程(4)深度理解死锁、内存可见性、volatile关键字、wait、notify

目录 一、死锁 1.1 出现死锁的常见场景&#xff1a; 1.2 产生死锁的后果&#xff1a; 1.3 如何避免死锁&#xff1a; 二、内存可见性 2.1 由内存可见性产生的经典案例&#xff1a; 2.2 volatile 关键字&#xff1a; 2.2.1 volatile 用法&#xff1a; 2.2.2 volatile 不…

C/C++ 检测文件是否存在的方法

在C和C中&#xff0c;检测文件是否存在的方法通常涉及到平台特定的API或者使用标准库的功能&#xff08;在C17及以后版本中&#xff09;。以下是几种常见的方法&#xff1a; C 在C中&#xff0c;通常使用POSIX标准&#xff08;在Unix-like系统上&#xff09;或Windows API&am…

PostgreSQL的视图pg_stat_user_tables

PostgreSQL的视图pg_stat_user_tables pg_stat_user_tables 是 PostgreSQL 中的一个系统视图&#xff0c;用于显示用户定义的表的统计信息。这些统计信息包括表的访问情况、修改情况以及很多其他的性能指标。这个视图为数据库管理员提供了丰富的数据&#xff0c;可以帮助他们进…

使用 Scapy 库编写 ICMP 时间戳攻击脚本

一、介绍 ICMP时间戳攻击&#xff08;ICMP Timestamp Attack&#xff09;是一种利用ICMP协议中的Timestamp请求和响应消息来实施的攻击。攻击者发送大量的ICMP Timestamp请求消息到目标主机&#xff0c;以触发目标主机对每个请求进行响应&#xff0c;从而消耗目标系统的网络资…