1

这是我使用 iframe 在 JavaScript 中打印 pdf 文件的代码。但我无法打印什么都没有发生,但这段代码在谷歌浏览器中完美运行。在 IE8 中不起作用。ContentLoaderDiv 是 html 的划分。请帮我..

当我从使用 Java 脚本而不是 adobe Reader 打印对话框打印的应用程序中打印 PDF 文档时,会调用浏览器打印对话框。

有没有人看到这个问题?如何调用 Adob​​e reader 打印机对话框而不是浏览器打印对话框?

 function printPdf() {
        var ContentLoaderDiv = document.getElementById('ContentLoaderDiv');
        ContentLoaderDiv.innerHTML = "";
        ContentLoaderDiv.innerHTML = '<div id="pdfdiv" style="position: relative;"><iframe id="frame1"  height="800" width="700" src="' + document.getElementById("<%= hdnPDFPathForObject.ClientID  %>").value + "print.pdf#scrollbar=1&toolbar=1&statusbar=0&messages=0&navpanes=1" + '"' + " /></iframe></div>";
        frame1.focus();
        frame1.print(); 

}

4

2 回答 2

5

试试这个:

function PdfUtil(url) {

    var iframe;

    var __construct = function(url) {
        iframe = getContentIframe(url);
    }

    var getContentIframe = function(url) {
        var iframe = document.createElement('iframe');
        iframe.src = url;
        return iframe;
    }

    this.display = function(parentDomElement) {
        parentDomElement.appendChild(iframe);
    }

    this.print = function() {
        try {
            iframe.contentWindow.print();
        } catch(e) {
            throw new Error("Printing failed.");
        }
    }

    __construct(url);
}

您可以按如下方式使用它:

var pdf = new PdfUtil(PDF_URL);
pdf.display(document.getElementById('placeholder'));

document.getElementById('printBtn').onclick = function() {
    pdf.print();
}

显然,虽然PDF_URL这里是一个"constant",但在您的情况下,它很可能应该被生成。

与 IE8 和 Chrome 完美配合(应该也可以与其他浏览器配合使用)。此外,OO 方法使其更易于维护和/或可重用。可能仍需要对实际逻辑进行轻微修改以满足您的所有需求。

于 2013-09-19T13:42:03.333 回答
1

我一直在努力寻找一种适用于 IE 和 Chrome 的解决方案。这对我有用:

$(function() {
    var ua = window.navigator.userAgent;
    var msie = ua.indexOf('MSIE ');
    var trident = ua.indexOf('Trident/');
    var edge = ua.indexOf('Edge/');
    var url = '/url/to/file.pdf';
    var pdf ='';
    var style = 'position:fixed; top:0px; left:0px; bottom:0px; right:0px; width:100%; height:100%; border:none; margin:0; padding:0; overflow:hidden;';

    if(msie > 0 || trident > 0 || edge > 0){
        pdf = '<object data="' + url + '" name="print_frame" id="print_frame" style="' + style + '" type="application/pdf">';
    }
    else{
        pdf ='<iframe src="' + url + '" name="print_frame" id="print_frame" style="' + style + '"></iframe>';
    }

    $(document.body).append(pdf);

    setTimeout(function(){
        window.frames["print_frame"].focus();
        window.frames["print_frame"].print();
    },2000);
});

...干杯。

于 2017-10-31T13:40:52.850 回答