Javascript 如何打印多个PDF';s在angular 9中使用print.js

Javascript 如何打印多个PDF';s在angular 9中使用print.js,javascript,angular,typescript,angular9,printjs,Javascript,Angular,Typescript,Angular9,Printjs,我曾尝试使用库打印PDF,它可以很好地打印单个PDF。现在,当我试图打印多个PDF时,它抛出了一个错误:错误多选。。此外,我也尝试过使用纯JS,但它会多次提示输入多个文档 下面是我们正在使用的代码 printJS({ printable: ['dummy.pdf', 'dummy1.pdf'], type:'pdf' }); 请找到附件 任何帮助都非常感谢 目前print.js不支持打印多个文件。我会尝试先将这些文件合并成一个文件,然后

我曾尝试使用库打印PDF,它可以很好地打印单个PDF。现在,当我试图打印多个PDF时,它抛出了一个错误:错误多选。。此外,我也尝试过使用纯JS,但它会多次提示输入多个文档

下面是我们正在使用的代码

printJS({ 
         printable: ['dummy.pdf', 'dummy1.pdf'], 
         type:'pdf'
        });
请找到附件


任何帮助都非常感谢

目前print.js不支持打印多个文件。我会尝试先将这些文件合并成一个文件,然后再打印一个文件。这将仅创建一个打印预览,提供更好的用户体验

作为解决方法,您可以使用onPrintDialogClose事件

printJS({
    printable: 'page01.pdf',
    type: 'pdf',
    onPrintDialogClose: function() {
        printJS('page02.pdf');
    }
})
根据

可打印-文档源:pdf或图像url、html元素id或json 数据对象

它意味着每次只允许一个可打印文件

因此,我将尝试循环介绍它的基本用法(调用
printJS()
,然后传入一个PDF文档url)

var-pdfs_list=['dummy.pdf','dummy1.pdf'];
对于(var i=0;i

要么这样,要么像建议的那样将文件连接到服务器端。

最后,在花了一周的时间后,我能够在angular 9中使用print.js打印多个PDF。 以下是打印多个PDF的以下步骤:

  • 安装npm模块:PDF库

    npm i pdf lib

  • 在angular文件中导入npm模块,并使用以下代码将多个PDF合并为单个PDF(例如app.components.ts)

  • 调用函数进行打印(app.component.html)

    打印PDF文件


  • 参考资料:

    您是否尝试过循环希望打印的PDF阵列?发送多个打印命令?谢谢你的建议。你能告诉我如何将多个PDF合并到一个文件中吗?如何在客户端将多个PDF合并到一个文件中?@Priyank我建议在服务器端这样做。如果这是不可能的,这里有一个pdf.js示例,我们如何使用上述解决方案打印pdf和图像?我们如何使用print.js打印pdf和图像?@Priyank如果您有其他问题,请随时提问。要打印图像,文档显示
    printJS('images/print-01-highres.jpg','image')
    。基本上是一样的,但必须传递第二个参数,名为
    image
    。所以,你可以用不同的方法来做。如果只有.pdf文件和图像,可以在循环中使用If语句,并检查数组的该项是否为.pdf
    ;否则,将该方法与第二个参数一起使用。
    var pdfs_list = ['dummy.pdf', 'dummy1.pdf'];
    for (var i = 0; i < pdfs_list.length; i++) {
        printJS(pdfs_list[i]);
    }
    
    import { PDFDocument } from 'pdf-lib'
    @Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.scss']
    })
    
    export class AppComponent {
    title = 'print-multiple-pdfs';
    
    /* Convert the merged pdf array buffer to blob url for print or open in browser.*/
    downloadFile(data) {
     const blob = new Blob([data], { type: 'application/pdf' });
     const url= window.URL.createObjectURL(blob);
     //window.open(url);
     printJS({
       printable: url,
       type: 'pdf',
     })
    }
    
    async printPDFS() {
     /* Array of pdf urls */
     let pdfsToMerge = ['https://cors-anywhere.herokuapp.com/https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf', 'https://cors-anywhere.herokuapp.com/http://africau.edu/images/default/sample.pdf', 'https://cors-anywhere.herokuapp.com/https://www.hq.nasa.gov/alsj/a17/A17_FlightPlan.pdf']
    
     const mergedPdf = await PDFDocument.create();
     for (const pdfCopyDoc of pdfsToMerge) {
     const pdfBytes = await fetch(pdfCopyDoc).then(res => res.arrayBuffer())
     //const pdfBytes = fs.readFileSync(pdfCopyDoc);
     const pdf = await PDFDocument.load(pdfBytes);
     const copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());
     copiedPages.forEach((page) => {
       mergedPdf.addPage(page);
     });
    }
    const mergedPdfFile = await mergedPdf.save();
    this.downloadFile(mergedPdfFile);
     }
    }