使用 javascript 在 IFrame 中打印 PDF 文件,仅获取一页

Print PDF File in IFrame using javascript getting one page only

本文关键字:文件 获取 一页 PDF 打印 javascript IFrame 使用      更新时间:2023-09-26

这是我打印PDF文件的代码。 在这里,而打印时间我只得到一页,我需要解决方案。

  function printPdf(){
     var ifr = document.getElementById("frame1");
         //PDF is completely loaded. (.load() wasn't working properly with PDFs)
     ifr.onreadystatechange = function () {
        if (ifr.readyState == 'complete') {
              ifr.contentWindow.focus();
              ifr.contentWindow.print();
           }
       }
 }

我怀疑这是因为整个窗口都被打印出来了(它具有iframe的当前视图,并渲染了PDF的第一页)。请改用<object>

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <script>
    function PrintPdf() {
        idPrint.disabled = 0;
        idPdf.Print();
    }
    function idPdf_onreadystatechange() {
        if (idPdf.readyState === 4)
            setTimeout(PrintPdf, 1000);
    }
    </script>
</head>
<body>
    <button id="idPrint" disabled=1 onclick="PrintPdf()">Print</button>
    <br>
    <object id="idPdf" onreadystatechange="idPdf_onreadystatechange()"
        width="300" height="400" type="application/pdf"
        data="test.pdf?#view=Fit&scrollbar=0&toolbar=0&navpanes=0">
        <span>PDF plugin is not available.</span>
    </object>
</body>

此代码使用 IE 进行验证。其他浏览器仍会呈现 PDF,但可能无法打印。

[更新] 如果您需要动态加载和打印,对上述代码的更改很小:

<!DOCTYPE html>
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <script>
    function PrintPdf() {
        idPdf.Print();
    }
    function idPdf_onreadystatechange() {
        if (idPdf.readyState === 4)
            setTimeout(PrintPdf, 1000);
    }
    function LoadAndPrint(url)
    {
        idContainer.innerHTML = 
            '<object id="idPdf" onreadystatechange="idPdf_onreadystatechange()"'+
                'width="300" height="400" type="application/pdf"' +
                'data="' + url + '?#view=Fit&scrollbar=0&toolbar=0&navpanes=0">' +
                '<span>PDF plugin is not available.</span>'+
            '</object>';
    }
    </script>
</head>
<body>
    <button id="idPrint" onclick="LoadAndPrint('http://localhost/example.pdf')">Load and Print</button>
    <br>
    <div id="idContainer"></div>
</body>
<iframe src="teste.pdf" id="meupdf" width="800" height="600" />
function printPdf) {
    var PDF = document.getElementById("meupdf");
    PDF.focus();
    PDF.contentWindow.print();
}