在新窗口中打开PDF,打印PDF并关闭窗口。如何在javascript中执行此操作

时间:2011-11-01 17:26:19

标签: javascript pdf

在新窗口中打开PDF,打印PDF并关闭窗口。如何在javascript中执行此操作。 这3个步骤应该只需点击一下即可完成。

2 个答案:

答案 0 :(得分:1)

很抱歉通知您,使用纯javascript无法完成这些步骤。想象一下,如果网站能够自动将打印请求直接发送给用户打印机。您访问恶意网站,可能会耗尽碳粉和/或纸张。您必须在将执行实际打印的客户端浏览器上安装一些插件。

答案 1 :(得分:1)

有两种情况:通过get请求或post(form)请求加载pdf;我的场景通过打开打印对话框来解决它们,当打印对话框关闭时,关闭窗口。

对于get请求,这应该足够了:

function testprint(){
    var w = window.open(yourURL)
    w.focus()
    w.print()
    // Don't try to close it until you've give the window time to register the print dialog request
    setTimeout(function(){
        w.close() 
    }, 1000)
}

帖子有点复杂。在争论这个问题一段时间之后,这就是我想出来的 - 它使用隐藏的iframe;我无法使用额外的窗口工作。结果就是你可以隐藏iframe,这样用户甚至不需要看到其他窗口。 (注意,您可以转换get解决方案以使用iframe并避免使用额外的窗口。)它假设您使用jQuery构建表单,并且帖子的结果将是您想要的PDF。

jQuery(document.body).append(form);
if (doPrint) {
    jQuery(document.body).append("<iframe style='display:none' id='doPrintId' name='doPrint'>");
    form.submit(function () {
        form.attr('target', 'doPrint');
    });
    var printWindow = document.getElementById('doPrintId');
    printWindow.onload = function(){
        printWindow.focus();
        printWindow.contentWindow.print();
        document.body.remove(printWindow);
    };

    form.submit();
} else {
    form.submit();
}

jQuery(document.body).remove(form);