Javascript 从Blob agnular打印pdf文件时出现问题

Javascript 从Blob agnular打印pdf文件时出现问题,javascript,angular,blob,Javascript,Angular,Blob,我有一个Api,它以 { fileName: string, blob: Blob }[] 我想打印所有这些文件,所以我使用 _files.forEach((_fileInfo) => { const blobUrl = URL.createObjectURL(_fileInfo.blob); const oWindow = window.open(blobUrl, "print"); oWindow.print();

我有一个Api,它以

{ fileName: string, blob: Blob }[]
我想打印所有这些文件,所以我使用

_files.forEach((_fileInfo) => {
      const blobUrl = URL.createObjectURL(_fileInfo.blob);
      const oWindow = window.open(blobUrl, "print");
      oWindow.print();
      oWindow.close();
});
这将打开多个打印窗口,但在预览中显示空白文档

但是当我下载所有这些文件时,它会下载正确的PDF文件

// add files to zip
files.forEach((_fileInfo) => {
    zip.file(_fileInfo.fileName, _fileInfo.blob);
});

// download and save
return zip.generateAsync({ type: "blob" }).then((content) => {
    if (content) {
        return saveAs(content, name);
    }
});
  • 可能是什么问题,

  • 有没有办法在不打开多个窗口的情况下按顺序打印所有文档


  • Pdf文件需要时间加载,这就是为什么它显示空白文档,所以我用它来解决这个问题

    如何导入

    import * as printJS from "print-js";
    
    如何使用

    const blobUrl = URL.createObjectURL(_fileInfo.blob);
    printJS(blobUrl);
    

    在这种情况下,您不想使用printJS

    我面临着同样的问题,但在我的情况下,我一次只需要处理一个文件。我通过将print函数放入一个超时块来解决它,所以在您的情况下

            setTimeout(function(){
                oWindow.print();
            }, 1000)
    

    如果这样做很好,如果不行,那么您可能还需要将窗口的源设置为您创建的“blobUrl”。这应该在您退出循环后完成。

    它是否适用于单个文件,没有循环?否,它在预览中显示空白文档您是否可以指定
    \u文件
    集合,例如,如何获取
    \u fileInfo
    的值?@AlenaKastsiukavets,printJs完成了这项工作,我的意思是,现在它显示了正确的PDF预览,现在唯一的问题是合并PDF,是否有任何方法可以在一次单击中打印多个PDF文件。