我是小渔歌,点击右上方“关注”,每天为你分享【前端技术知识】干货 。可能有不少小伙伴,在业务中遇到需要前端生成pdf的功能 。
今天就为大家介绍几款 , 前端生成pdf的开源库 。
这里只说一下这几款方案的基本功能,需要的可以自行查看官方文档,不懂的可以私信我 。
方案一jsPDF
new jsPDF(orientation, unit, format)功能
- 支持文本
- 支持图片
- 支持html
- 支持设置字体,文字大小
- 等等
方案二pdfkit
var doc = new PDFDocument();var stream = doc.pipe(blobStream());这个开源库既支持浏览器端也支持node服务端 。功能
- 支持文本
- 支持图片
- 支持html
- 支持设置字体,文字大小
- 等等
这个开源库还提供了丰富的绘制各种形状,以及线条的api,最主要的是他还支持svg path[中国赞] 。
方案三pdfmake
pdfMake.createPdf(docDefinition).download();这个开源库既支持浏览器端也支持node服务端 。pdfmake实际上是对pdfkit的封装,pdfkit有的功能pdfmake都有,只是用起来更简洁了 。
更重要的是pdfmake支持分栏[中国赞] 。
方案四pupetter
const puppeteer = require('puppeteer');(async () => {const browser = await puppeteer.launch();const page = await browser.newPage();await page.goto('https://example.com');await page.pdf({path: 'example.pdf'});await browser.close();})();他是利用在node服务端运行一个无头chrome浏览器来实现的 。
这个方法就比较简单暴力了,直接打开一个网页 , 将这个网页的内容生成pdf 。
注意:这个网页内容尺寸得控制好 。而且这个有点坑的地方就是,这个东西在本地跑,字体是一点毛病没有的,但是部署到云端就有问题了 , 所有字体都失效了,这个时候需要你在docker容器中装各种字体,此处脑袋有点大 , 感兴趣的可自行研究 。
总结
jsPDF只支持浏览器端,pdfkit与pdfmake既支持浏览器端也支持node服务端 , pupeteer支持服务端 , 各位可以根据自己的业务需求自行选择 。大家还知道其他生成PDF的方案嘛?可以在评论区留言哦,共同学习 。
往期精彩内容
FormData对象,知道吗?它可以让你在表单数据处理上事半功倍?flex不香吗 , 你还在傻傻地用float吗
作者介绍
【前端生成PDF,这几个方案你一定要知道】小渔歌,90后前端研发工程师,热爱生活,一个在劳动中不断学习的人,愿我们共同进步,点关注不迷路[中国赞][作揖] 。
