项目场景:
前台在线生成多个pdf文件,并打成zip包下载
解决方案:
pdf文件使用jsPDF
生成,压缩包用JSZip
生成,但是前者生成的pdf怎么添加到后者的zip中研究了一段时间,最终方案如下:
import JSZip from "jszip";
import {jsPDF} from "jspdf";
···
downloadZip(){
let zip = new JSZip();
zip.file("Hello.txt", "Hello World\n");
const doc = new jsPDF('p', 'pt'); // 获取实例
// 设置中文字体
doc.setFont('simfang');
const pageWidth = doc.getPageWidth(); // A4纸:595.28
const x1 = (pageWidth - doc.getTextWidth("Hello World")) / 2;
doc.text(x1, doc.lastAutoTable.finalY+30 || 40, "Hello World"); // x坐标,y坐标,文字
// 直接保存pdf文件
// doc.save("Hello.pdf");
// pdf添加到zip中
var datauri = doc.output('dataurlstring');
var base64 = datauri.substring(28);
zip.file("Hello.pdf", base64, {base64: true});
let content = zip.generate({type:"blob"})
saveAs(content, "download.zip");
}