JavaScript 打印 PDF 流 - 解决空白页问题
<p>"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 < 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(() => {\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"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>
原文地址: https://www.cveoy.top/t/topic/p91v 著作权归作者所有。请勿转载和采集!