<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 = 'block'; // 将 display 设置为 block 确保容器可见\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\n// 或者尝试将 printContainer 直接添加到 document.body\nprintContainer.style.display = 'block';\n      document.body.appendChild(printContainer);\n\n// 确保PDF Blob流正确加载\n// 确保浏览器支持打印PDF\n\n// 其他解决方法:\n// - 将 PDF 加载到一个单独的页面,然后再打印该页面\n// - 使用专门的 PDF 打印库,例如 jsPDF 或 PDF.js\n\n\n&quot;js 该方法打印pdf流是空白的是为什么内容:可能是因为在创建打印容器时设置了<code>display: none</code>,导致打印时容器不可见。可以尝试将<code>printContainer.style.display</code>的值改为<code>block</code>,或者将其直接添加到<code>document.body</code>而不是<code>printDocument.body</code>。此外,还可以检查PDF Blob流是否正确加载,并确保浏览器支持打印PDF。</p>
JavaScript 打印 PDF 流 - 解决空白页问题

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

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