在窗口加载时用JS打印一个html表


Printing a html table with JS on window load

我需要将表元素的内容打印到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>&nbsp;</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>&nbsp;</p></body> </html>'}