|
|
@@ -995,55 +995,111 @@
|
|
|
async mergeAndDownloadPDF(){ // urlList 单个PDF文件的URL
|
|
|
try{
|
|
|
this.wavePrintOrderPdfDownloadLoading = true;
|
|
|
- // 获取pdf链接集合
|
|
|
- this.getPrintPdfBatch().then(async (list)=>{
|
|
|
- let newPdf = await PDFDocument.create();
|
|
|
- let pageWidth = 0;
|
|
|
- let pageHeight = 0;
|
|
|
- for(let i=0 ; i <list.length; i++){
|
|
|
- let pdfList = list[i].pdfList;
|
|
|
- for(let j=0 ; j <pdfList.length; j++){
|
|
|
- let randomStr = Math.floor(Math.random()*100000).toString();
|
|
|
- let pdfBuffer = await this.getPdfFile2(this.resourcesUrl + pdfList[j].pdfUrl+"?u="+randomStr);
|
|
|
- let pdfDocument = await PDFDocument.load(pdfBuffer);
|
|
|
- let contentPages = await newPdf.copyPages(pdfDocument, pdfDocument.getPageIndices());
|
|
|
- for (let l=0; l<contentPages.length; l++) {
|
|
|
- newPdf.addPage(contentPages[l]);
|
|
|
- if(pageWidth == 0){
|
|
|
- pageWidth = contentPages[l].getWidth();
|
|
|
- pageHeight = contentPages[l].getHeight();
|
|
|
+ if(this.wave.waveName.indexOf("白墨") !== -1){
|
|
|
+ this.getPrintPdfBatch().then(async (list)=>{
|
|
|
+ let pdfList = list
|
|
|
+ const newZip = new JSzip()
|
|
|
+ const promises = []
|
|
|
+ pdfList.forEach((item, j) => {
|
|
|
+ let pdf = item.pdfList[0]
|
|
|
+ if(pdf.pdfName.endsWith('.zip') && pdf.pdfName.indexOf('对裱') === -1){
|
|
|
+ const zip = new JSzip()
|
|
|
+ let innerPromise = new Promise((resolve, reject) => {
|
|
|
+ fetch(this.resourcesUrl + pdf.pdfUrl).then(response =>{
|
|
|
+ if (!response.ok) {
|
|
|
+ throw new Error('Network response was not ok ' + response.statusText);
|
|
|
+ }
|
|
|
+ return response.blob();
|
|
|
+ }).then(blob => {
|
|
|
+ // 现在你有了一个Blob对象,可以根据需要使用它
|
|
|
+ let folderData = []
|
|
|
+ zip.loadAsync(blob).then(zipData =>{
|
|
|
+ for(let filename of Object.keys(zipData.files)){
|
|
|
+ let data = zipData.files[filename].async('blob')
|
|
|
+ folderData.push({name: filename, data: data})
|
|
|
+ }
|
|
|
+ resolve(folderData)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }).then(folderData =>{
|
|
|
+ let folder = newZip.folder(pdf.pdfFolderName)
|
|
|
+ for(let key in folderData) {
|
|
|
+ folder.file(folderData[key].name, folderData[key].data, {binary: true})
|
|
|
+ }
|
|
|
+ })
|
|
|
+ promises.push(innerPromise)
|
|
|
+ }else{
|
|
|
+ const promise = this.getPdfFile(this.resourcesUrl + pdf.pdfUrl).then(data => {
|
|
|
+ newZip.file(pdf.pdfName, data, {
|
|
|
+ binary: true
|
|
|
+ })
|
|
|
+ })
|
|
|
+ promises.push(promise)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ Promise.all(promises).then(() => {
|
|
|
+ newZip.generateAsync({ type: 'blob' }).then(content => {
|
|
|
+ let outputName = this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName + ".zip"
|
|
|
+ // 生成二进制流 然后保存文件(如果这个下载不了 也可以将下方这一行换成a标签下载逻辑)
|
|
|
+ saveAs(content, outputName) // 利用file-saver保存文件 自定义文件名
|
|
|
+ this.wavePrintOrderPdfDownloadLoading = false
|
|
|
+ })
|
|
|
+ // eslint-disable-next-line handle-callback-err
|
|
|
+ }).catch((error) => {
|
|
|
+ this.wavePrintOrderPdfDownloadLoading = false
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }else{
|
|
|
+ // 获取pdf链接集合
|
|
|
+ this.getPrintPdfBatch().then(async (list)=>{
|
|
|
+ let newPdf = await PDFDocument.create();
|
|
|
+ let pageWidth = 0;
|
|
|
+ let pageHeight = 0;
|
|
|
+ for(let i=0 ; i <list.length; i++){
|
|
|
+ let pdfList = list[i].pdfList;
|
|
|
+ for(let j=0 ; j <pdfList.length; j++){
|
|
|
+ let randomStr = Math.floor(Math.random()*100000).toString();
|
|
|
+ let pdfBuffer = await this.getPdfFile2(this.resourcesUrl + pdfList[j].pdfUrl+"?u="+randomStr);
|
|
|
+ let pdfDocument = await PDFDocument.load(pdfBuffer);
|
|
|
+ let contentPages = await newPdf.copyPages(pdfDocument, pdfDocument.getPageIndices());
|
|
|
+ for (let l=0; l<contentPages.length; l++) {
|
|
|
+ newPdf.addPage(contentPages[l]);
|
|
|
+ if(pageWidth == 0){
|
|
|
+ pageWidth = contentPages[l].getWidth();
|
|
|
+ pageHeight = contentPages[l].getHeight();
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- //如果是圆角,就补充空白页
|
|
|
- if(this.wave.printChannel === "KuaiYin"){
|
|
|
- // if(this.wave.waveName.indexOf("圆角") != -1){
|
|
|
- // let allPageSize = newPdf.getPageCount();
|
|
|
- // let totalPage = 144
|
|
|
- // if(this.wave.colorPrint === '四色'){
|
|
|
- // totalPage = 120
|
|
|
- // }
|
|
|
- // let mod = allPageSize % totalPage;
|
|
|
- // if(mod != 0){
|
|
|
- // let diff = totalPage - mod;
|
|
|
- // for(let i = 1; i <= diff; i++){
|
|
|
- // newPdf.addPage([pageWidth, pageHeight]);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- }
|
|
|
- let uint8Array = await newPdf.save();
|
|
|
- let mergeBuffer = Buffer.from(uint8Array);
|
|
|
- if(this.wave.printChannel === "KuaiYin"){
|
|
|
- downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName
|
|
|
- + ".pdf");
|
|
|
- }else{
|
|
|
- downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.waveName
|
|
|
- + ".pdf");
|
|
|
- }
|
|
|
- this.wavePrintOrderPdfDownloadLoading = false;
|
|
|
- });
|
|
|
+ //如果是圆角,就补充空白页
|
|
|
+ if(this.wave.printChannel === "KuaiYin"){
|
|
|
+ // if(this.wave.waveName.indexOf("圆角") != -1){
|
|
|
+ // let allPageSize = newPdf.getPageCount();
|
|
|
+ // let totalPage = 144
|
|
|
+ // if(this.wave.colorPrint === '四色'){
|
|
|
+ // totalPage = 120
|
|
|
+ // }
|
|
|
+ // let mod = allPageSize % totalPage;
|
|
|
+ // if(mod != 0){
|
|
|
+ // let diff = totalPage - mod;
|
|
|
+ // for(let i = 1; i <= diff; i++){
|
|
|
+ // newPdf.addPage([pageWidth, pageHeight]);
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ }
|
|
|
+ let uint8Array = await newPdf.save();
|
|
|
+ let mergeBuffer = Buffer.from(uint8Array);
|
|
|
+ if(this.wave.printChannel === "KuaiYin"){
|
|
|
+ downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.colorPrint + "_" + this.wave.gram + "_" + this.wave.waveName
|
|
|
+ + ".pdf");
|
|
|
+ }else{
|
|
|
+ downloadPdf(mergeBuffer, this.wave.waveNo + "_" + this.wave.waveName
|
|
|
+ + ".pdf");
|
|
|
+ }
|
|
|
+ this.wavePrintOrderPdfDownloadLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
}catch (error) {
|
|
|
this.wavePrintOrderPdfDownloadLoading = false;
|
|
|
}
|