我有两个功能可以打印NSImage
并打印element
page
形成任何页面我点击功能按钮打印页面
function printPage(page,redirect,dontPrint=false)
{
if($('.printThis').length == 0)
{
$('body').append('<div class="printThis hide"></div>');
}
$('.printThis').load(page,function(){
printContent($('.printThis'),redirect,dontPrint);
$('.printThis').remove();
});
}
function printContent(div_id,redirect,dontPrint=false)
{
var DocumentContainer = div_id.html();
var html = '<html><head>'+
'<link href="'+tmpl+'assets/css/print.css" rel="stylesheet" type="text/css" />'+
'</head><body style="background:#ffffff;">'+
DocumentContainer+
'</body></html>';
var WindowObject = window.open("", "PrintWindow",
"width=750,height=650,top=50,left=50,toolbars=no,scrollbars=yes,status=no,resizable=yes");
WindowObject.document.write(html);
WindowObject.document.close();
WindowObject.focus();
setTimeout( function() {
if(!dontPrint)
{
WindowObject.print();
WindowObject.close();
}
if(redirect)
window.location.assign(redirect);
}, 50 );
}
当用户点击<button class="btn btn-primary btn-xs" onclick="printPage('/myproject/prints/bill/sales/5','')">Print Bill</button>
的按钮时,会弹出first time
!!!!
任何时候他再次点击该按钮它可以正常工作
答案 0 :(得分:1)
要解决您的问题,您需要将其添加到要打印的HTML代码中:
<script>
window.onload = function(){
window.print();
}
</script>
一旦内容全部加载并呈现,这将开始打印过程。没有更多的超时!
超出答案的范围:
不要使用弹出窗口(显示window.open
的行)。很多人阻止了这些(我非常感谢那些发明了弹出窗口拦截器的人),甚至在某些设备上也没有用。
您可以做的是创建<iframe>
并将内容转储给它。
像这样排序:
<a href="/myproject/prints/bill/sales/5" target="print" class="btn btn-primary btn-xs">Print Bill</button>
<iframe id="print" name="print" style="display:none;"></iframe>
点击该链接后,它将打开<iframe>
内的页面。由于您正在生成<iframe>
的输出,因此您可以将引用的javascript代码添加到输出中。
这将为您节省大量工作并保持尽可能兼容。更不用说容易了!
答案 1 :(得分:-2)
好的,我发现了我的问题
这是我的页面完全加载的时间,所以我将延迟增加到700它工作正常 谢谢