jsPDF 拼接多个 PDF Blob 实现多页打印
"// 导入 jsPDF 和 FileSaver 库\nimport jsPDF from 'jspdf';\nimport 'file-saver';\n\n// 创建一个空的 jsPDF 对象\nconst mergedPDF = new jsPDF();\n\n// 创建一个用于保存所有 PDF 的 Blob 数组\nconst pdfBlobs = [];\n\n// 加载多个 PDF 文件\nconst loadPDFs = async () => {\n const pdfUrls = ['pdf1.pdf', 'pdf2.pdf', 'pdf3.pdf']; // 要拼接的 PDF 文件的 URL\n const promises = pdfUrls.map(url => fetch(url).then(response => response.blob()));\n const blobs = await Promise.all(promises);\n \n // 保存每个 PDF 的 Blob 到数组中\n pdfBlobs.push(...blobs);\n \n // 如果还有其他 PDF 文件需要加载,可以在此处继续调用 loadPDFs() 函数\n // 否则,调用 mergePDFs() 函数开始拼接 PDF 并打印\n mergePDFs();\n};\n\n// 拼接 PDF 并保存为 Blob\nconst mergePDFs = () => {\n // 遍历每个 PDF 的 Blob,并将其添加到 mergedPDF 对象中\n pdfBlobs.forEach(blob => {\n const reader = new FileReader();\n reader.onloadend = () => {\n const data = reader.result;\n mergedPDF.addPage();\n mergedPDF.addImage(data, 'JPEG', 0, 0, mergedPDF.internal.pageSize.getWidth(), mergedPDF.internal.pageSize.getHeight());\n };\n reader.readAsDataURL(blob);\n });\n \n // 保存拼接后的 PDF 为 Blob\n const mergedBlob = mergedPDF.output('blob');\n \n // 保存 Blob 到本地,并使用 FileSaver.js 库实现打印功能\n saveBlob(mergedBlob, 'merged.pdf');\n printBlob(mergedBlob);\n};\n\n// 保存 Blob 到本地\nconst saveBlob = (blob, filename) => {\n saveAs(blob, filename);\n};\n\n// 打印 Blob\nconst printBlob = blob => {\n const url = URL.createObjectURL(blob);\n const iframe = document.createElement('iframe');\n iframe.style.display = 'none';\n iframe.src = url;\n document.body.appendChild(iframe);\n iframe.contentWindow.print();\n};\n\n// 调用 loadPDFs() 函数开始加载 PDF 并拼接\nloadPDFs();\n"\
原文地址: https://www.cveoy.top/t/topic/p96I 著作权归作者所有。请勿转载和采集!