python做网站用什么框架,嘉兴网站建设制作,外贸网站制作要求,类似于 wordpress最近出差开了好多发票#xff0c;写了一个pdf合并网站#xff0c;用于把多张发票pdf合并成一张#xff0c;方便打印
使用pdf-lib这个库实现的pdf合并功能#xff0c;预览使用的是浏览器自身查看pdf功能 源码 网页地址 https://zqy233.github.io/PDF-merge/ !DOCTYPE h…最近出差开了好多发票写了一个pdf合并网站用于把多张发票pdf合并成一张方便打印
使用pdf-lib这个库实现的pdf合并功能预览使用的是浏览器自身查看pdf功能 源码 网页地址 https://zqy233.github.io/PDF-merge/ !DOCTYPE html
htmlheadtitlePDF合并/titlescript srchttps://cdn.jsdelivr.net/npm/pdf-lib1.17.1/dist/pdf-lib.min.js/script/headbodyinput typefile idfileInput multiple /button onclickpreviewMergePDF()预览合并的PDF/buttonbutton onclickdownloadMergePDF()下载合并的PDF/buttonscriptasync function previewMergePDF() {const fileInput document.getElementById(fileInput);const files fileInput.files;if (files.length 2) {alert(请至少选择两个PDF文件进行合并);return;}// 创建一个新的PDF文档const mergedPdf await PDFLib.PDFDocument.create();// 遍历选择的每个文件for (let i 0; i files.length; i) {const file files[i];const reader new FileReader();// 读取文件内容const fileContents await new Promise((resolve, reject) {reader.onload function (event) {resolve(event.target.result);};reader.onerror function (event) {reject(new Error(文件读取错误。));};reader.readAsArrayBuffer(file);});// 将PDF文件添加到合并的PDF文档中const pdf await PDFLib.PDFDocument.load(fileContents);const copiedPages await mergedPdf.copyPages(pdf,pdf.getPageIndices());copiedPages.forEach((page) {mergedPdf.addPage(page);});}// 使用浏览器自带预览功能预览合并后的PDFconst mergedPdfBytes await mergedPdf.save();const mergedPdfBlob new Blob([mergedPdfBytes], {type: application/pdf,});const fileURL URL.createObjectURL(mergedPdfBlob);window.open(fileURL);}async function downloadMergePDF() {const fileInput document.getElementById(fileInput);const files fileInput.files;if (files.length 2) {alert(请至少选择两个PDF文件进行合并);return;}const mergedPdf await PDFLib.PDFDocument.create();for (let i 0; i files.length; i) {const file files[i];const reader new FileReader();const fileContents await new Promise((resolve, reject) {reader.onload function (event) {resolve(event.target.result);};reader.onerror function (event) {reject(new Error(文件读取错误。));};reader.readAsArrayBuffer(file);});const pdf await PDFLib.PDFDocument.load(fileContents);const copiedPages await mergedPdf.copyPages(pdf,pdf.getPageIndices());copiedPages.forEach((page) {mergedPdf.addPage(page);});}const mergedPdfFile await mergedPdf.saveAsBase64();const downloadLink document.createElement(a);downloadLink.href data:application/pdf;base64, mergedPdfFile;downloadLink.download merged.pdf;downloadLink.click();}/script/body
/html