有一天,我发现 Slowly 应用有 web 端,网页也是简洁的风格,看着陈列的一封封信件,产生想要保存的想法,于是开始了从 html 到 pdf 的换装之旅。
Slowly
Slowly,是一个慢的应用,在这里可以结识天南地北的笔友,交流的信件根据地点不同,派送时间从几天到几小时不等。在这里可以讨论各种东西,每次看到派送的小箭头,心中一片期待。我很喜欢这里。
选型
window
对象上有 print
方法,可以直接调用系统的打印方法,选择保存为 pdf,粗暴解决问题。在我的这个场景下,如此会保存整个窗口的内容,样式不美观,我不满意这种效果。看了一些资料后,我选择的方法借助 jsPDF 和 html2canvas 两个三方库,html2canvas 用于把 html 页面转化为 canvas,如此可以保持页面原有的 css 样式,处理 canvas 为图片后,使用 jsPDF 插入 pdf 文档,解决核心问题。
const canvas = await html2canvas(dom);
pdf.addImage(canvas.toDataURL('image/png'), 'PNG', 0, 0