当前位置: 首页 > news >正文

使用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.lryc.cn/news/365002.html

相关文章:

  • 龙迅#LT8711H支持TYPE-C/DP/EDP转HDMI功能应用,分辨率支持 1080p@60Hz,芯片内置固件!
  • WPF中Ignorable
  • 系统安全及应用11
  • vue中SKU实现
  • 闭眼推荐的,新手教师工具
  • charles抓包工具之---添加vConsole
  • Java多线程-初阶1
  • C++二级指针的指向与解引用
  • Pandas处理时间差的4种表达方式
  • C语言---指针part2
  • DNS域名
  • 19 - 查询结果的质量和占比(高频 SQL 50 题基础版)
  • 一次挖矿病毒的排查过程
  • 【JMeter接口测试工具】第二节.JMeter基本功能介绍(上)【入门篇】
  • ultralytics solutions快速解决方案,快速实现某些场景的图像解决方案
  • iphone突然黑屏?3种方法解决问题!
  • nn.GRU和nn.GRUCell区别
  • Coolmuster Android助手评测:简化Android到电脑的联系人传输
  • 【杂记-webshell恶意脚本木马】
  • 锻炼 精读笔记 01
  • 基于pytorch的车牌识别
  • 红酒:如何避免红酒过度氧化
  • FreeRTOS学习笔记-基于stm32(9)信号量总结(二值信号量、计数型信号量、互斥信号量、优先级翻转、优先级继承)
  • 归并排序——二路归并排序
  • java-StringBuilder
  • 数据结构 | 超详细讲解七大排序(C语言实现,含动图,多方法!)
  • 企业自建邮件系统的优势,安全性更高,功能更灵活,维护更便捷
  • Softing工业助力微软解锁工业数据,推动AI技术在工业领域的发展
  • 企微自动化机器人的应用与前景
  • 从零开始:如何用Electron将chatgpt-plus.top 打包成EXE文件