<p>&quot;printPDFs(pdfBlobs) {\n      const iframe = document.createElement('iframe');\n      iframe.style.display = 'none';\n      document.body.appendChild(iframe);\n\n      const printWindow = iframe.contentWindow || iframe.contentDocument;\n      const printDocument = printWindow.document;\n      // 创建一个打印容器\n      const printContainer = document.createElement('div');\n      printContainer.style.display = 'none';\n      printDocument.body.appendChild(printContainer);\n\n      // 遍历所有的PDF Blob流\n      for (let i = 0; i &lt; pdfBlobs.length; i++) {\n        const pdfBlob = pdfBlobs[i];\n\n        // 创建一个新的<embed>元素用于加载PDF\n        const embed = document.createElement('embed');\n        embed.src = URL.createObjectURL(pdfBlob);\n        embed.type = 'application/pdf';\n        embed.setAttribute('class', 'pdf-page');\n        embed.style.width = '100%';\n        embed.style.height = '100%';\n        printContainer.appendChild(embed);\n      }\n\n      // 等待所有PDF加载完成后打印\n      setTimeout(() =&gt; {\n        printWindow.print();\n\n        // 清除打印容器\n        printDocument.body.removeChild(printContainer);\n        document.body.removeChild(iframe);\n      }, 1000); // 延迟1秒钟以确保PDF加载完成\n    },\n&quot;该方法打印出来是空白的内容:这段代码是用于打印PDF的方法。它首先创建一个隐藏的iframe,并将其添加到文档的body中。然后,它在iframe中创建一个打印容器,并将所有的PDF Blob流加载到该容器中。\n\n接下来,它使用setTimeout函数设置一个延迟1秒的定时器,在定时器触发后执行打印操作。打印操作通过调用iframe的contentWindow对象或contentDocument对象的print方法来实现。\n\n最后,打印完成后,它从文档中移除打印容器和iframe。\n\n如果这段代码打印出来是空白的,可能有以下几个原因:\n1. PDF Blob流加载失败:请确保pdfBlobs数组中的每个元素都是有效的PDF Blob流。\n2. PDF Blob流加载时间过长:可能需要更长的时间来加载PDF Blob流。您可以尝试增加延迟的时间,例如将setTimeout函数的延迟时间增加到更长的值,看是否能解决问题。\n3. 打印容器显示问题:请确保打印容器的display属性设置为'none',以确保它在打印时不会显示在页面上。\n\n如果上述方法都没有解决问题,可能还需要检查其他与打印相关的代码或浏览器设置。</p>
JavaScript 打印 PDF Blob 流 - 解决方案和优化

原文地址: https://www.cveoy.top/t/topic/p91M 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录