【工具篇】那些年你应该遇到过的html转换成pdf
2020/7/31 14:04:02
本文主要是介绍【工具篇】那些年你应该遇到过的html转换成pdf,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
这几天遇到一个需求
需求背景就是这样的:我们有个功能叫做合同预览(由后端返回一堆json前端渲染显示),现在想把最后的样子变成pdf,但是把这个json数据需要根据具体业务需求去计算。
我想的是如何再不动现在业务代码上去实现pdf显示,直接把现在的html渲染后的合同html内容直接生成的pdf,作为一个资深搜索引擎引擎开发工程师打开我熟悉的搜索引擎开始搜索 【html转pdf】
插曲 关于wkhtmltopdf
一开始搜索到的是wkhtmltopdf
下载链接 https://wkhtmltopdf.org/ 直接下载对应操作系统的版本
wkhtmltopdf https://baidu.com baidu.pdf
打开baidu.pdf
看完,感觉稳一半了!
but
but
but
but
我们的前端是vue构造的 url大概是这样的 http://yun.xiaobaibar.com/#/login
这个链接之前很早自己做的项目 暂时拿来凑个数
wkhtmltopdf http://yun.xiaobaibar.com/#/login demo.pdf
他实际是这个样子
转成pdf是个样子!
what fuck
后来我大概稍微看了下vue-router的原理
vue-router 是直接找到与地址匹配的一个组件或对象并将其渲染出来,在地址中加入#以欺骗浏览器,地址的改变是由于正在进行页内导航。
简单就说 就是入口页面 -> 根据#后的路由 -> 再执行路由的js渲染页面
也就是入口页面的样式就是一个啥也没有的东西
所以为什么用wkhtmltopdf
是一片空白,本质类似curl
对应的页面内容根据代码转化成pdf
,缺少了执行js的过程。
最终方案 puppeteer
这里感谢下我们组的前端女大佬
关于puppeteer
是 Chrome 开发团队在 2017 年发布的一个 Node.js 包,用来模拟
Chrome 浏览器的运行。这个模拟
就是非常关键,竟然能模拟浏览器运行那当然可以执行js渲染啦!具体可以自己搜索了解。
安装过程
npm i puppeteer npm i puppeteer-core
附上demo代码
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.goto('http://yun.xiaobaibar.com/#/login'); await page.screenshot({path: 'example.png'}); await browser.close(); })(); node demo.js
结果为
最后
工具
很重要,他可能凸显不出你面试时候的气质,但是的确再工作中能减少你很多的开发量。
但是也有人会说我是写php
的,我是写java
的,但是你这个解决方案是node
的,我一直有个观念就是语言就是为了实现需求,需要什么写什么。
os:事实上我还是只会写php
这篇关于【工具篇】那些年你应该遇到过的html转换成pdf的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-30毕设私活神器
- 2024-05-30html
- 2024-05-09一定要避坑:关于微信H5分享,温馨提示你不要再踩坑了!!!
- 2024-05-09本地项目放到公网访问!炒鸡煎蛋!
- 2024-04-07金融企业区域集中库的设计构想和测试验证
- 2024-03-11前端CSS的工程化——掌握Sass这四大特性就够了
- 2024-02-21h5关联css样式(html怎么和css关联)-icode9专业技术文章分享
- 2024-02-07Firefox禁止远程字体加速网页加载及图标字体补充安装
- 2024-02-07一个菜鸡前端的3年总结-「2023」
- 2024-01-18最火前端Web组态软件(可视化)