在新窗口中打开PDF,打印该PDF并关闭窗口。如何在javascript中实现这一点

在新窗口中打开PDF,打印该PDF并关闭窗口。如何在javascript中实现这一点,javascript,pdf,Javascript,Pdf,在新窗口中打开PDF,打印该PDF并关闭窗口。如何在javascript中实现这一点。 这三个步骤应该一次点击完成。很抱歉地通知您,这些步骤不能简单地使用纯javascript完成。想象一下,如果网站能够自动将打印请求直接发送给用户和打印机。您访问恶意网站时,可能会耗尽碳粉和/或纸张。您必须在客户端浏览器上安装一些插件来执行实际打印。有两种情况:通过get请求或post(表单)请求加载pdf;我的场景通过打开“打印”对话框和关闭“打印”对话框时关闭窗口来解决这些问题 对于get请求,这应该足够了

在新窗口中打开PDF,打印该PDF并关闭窗口。如何在javascript中实现这一点。
这三个步骤应该一次点击完成。

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

有两种情况:通过get请求或post(表单)请求加载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);
jQuery(document.body).append(form);
if(doPrint){
jQuery(document.body).append(“”);
表单提交(函数(){
form.attr('target','doPrint');
});
var printWindow=document.getElementById('doPrintId');
printWindow.onload=函数(){
printWindow.focus();
printWindow.contentWindow.print();
文档。正文。删除(打印窗口);
};
表单提交();
}否则{
表单提交();
}
jQuery(document.body).remove(form);

只需提供一个打印对话框就足够了。用户在打印对话框中点击打印按钮后,它应该关闭。