Printer_open()打印html输出

时间:2013-08-08 05:29:49

标签: php html

使用php中的printer_open()函数,我可以打印保存在$content变量中的字符串,并且能够从文件中打印。

$printer = "\\\\Pserver.php.net\\printername"; 
$handler = printer_open($printer);
$content = "Test Content";  //string
printer_write($handler, $content); 
printer_close($handler); 

但是有一个我从数据库生成的html输出,并且在网页上显示,我需要在页面加载后直接打印到相同格式的打印,我尝试了很多,但我不知道我在做什么应该在页面使用printer_open()加载后,使打印机直接打印相同的HTML输出。

我该怎么办?如果有的话,请建议一个更好的方法


已更新

我不想使用javascript的windows.print()方法,因为它显示了打印对话框而不是直接将打印作业发送到打印机

我希望用户点击提交表单和打印机直接打印收据,而不会询问任何内容

3 个答案:

答案 0 :(得分:2)

您可以尝试使用输出缓冲区:

ob_start();
// generate your output from the DB here
// .....

// Send generated output to the printer
printer_write($handler, ob_get_contents());

// And show it to client on the frontend
ob_end_flush();

答案 1 :(得分:0)

使用自动对焦(需要支持HTML5的浏览器)创建隐藏字段,并使用html onblur属性(输出,如果用户点击任何其他表单元素)或特定表单元素(按钮)上的onfocus属性触发打印输出。不要提交表单,因为这会导致页面重新加载....

答案 2 :(得分:0)

据我了解您的问题,您正在尝试呈现HTML然后将其打印出来。不幸的是,如果你在客户端渲染它,你需要在客户端打印它 - 这将启动打印对话框。

可以在服务器上运行PhantomJS来渲染HTML,保存快照并打印出来,但这听起来像打印发票一样大量过度。

可能更好的想法是生成PDF并打印出来。