我需要将表元素的内容打印到POS收据打印机,我这样做:
<?php
private function message(){
return '<!DOCTYPE html><html moznomarginboxes mozdisallowselectionprint><body style="padding:30px;">'
.'<table id="print-area" style="height: 501px; border:1px solid red;padding:1em;margin:0 0 1em" width="364" ><tr><td>example</td></tr></table></table>'
.'<p> </p></body> </html>'}
?>
我所做的就是将PHP函数的返回值传递给一个新函数。请忽略php函数的结构和逻辑,这些只是我如何做到这一点的一个例子,我知道这可能不是最好的方法,但我真正需要帮助的是在JavaScript部分。为什么不打印并关闭新窗口?
我需要打印表格,使其适合POS收据页,而不打印整个空白空间....我已经尝试过这个版本的PrintReceipt函数,但是它在收据上打印了很多空白。
public function PrintReceipt($content) {
echo"<!DOCTYPE html><script type='application/javascript'>
window.onload=function(){
var myWindow = window.open('', 'MsgWindow', 'width=200,height=100');
myWindow.document.write('" . $content . "');
myWindow.print();
myWindow.close();
}
</script>";
}
如果您不使用frames
,那么声明以下行是没有意义的:
myWindow.frames['print_frame'].document.title = document.title;
myWindow.document.getElementById('print-area').contentWindow.print();
这意味着您在OP中的第二次尝试是正确的。如果有空位,那绝对是css
问题。如果你想让表格占用100%
的页面宽度,做:
return '<table id="print-area" style="height: 100%; border:1px solid red;padding:1em;margin:0 0 1em" width="100%" ><tr><td>example</td></tr></table></table>';
return '<!DOCTYPE html><html moznomarginboxes mozdisallowselectionprint><body style="padding:30px;">'
.'<table id="print-area" style="height: 501px; border:1px solid red;padding:1em;margin:0 0 1em" width="364" ><tr><td>example</td></tr></table></table>'
.'<p> </p></body> </html>'}