2011-11-01 93 views

回答

1

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

+0

只要给出一个打印对话框就足够了。用户点击打印对话框的打印按钮表单后,应该关闭。 – Sid

1

有两种情况:通过获取请求或通过发布(表单)请求加载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,所以用户甚至不需要看到其他窗口。 (请注意,您可以将获取解决方案转换为使用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); 
相关问题