使用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()方法,因为它显示了打印对话框而不是直接将打印作业发送到打印机
我希望用户点击提交表单和打印机直接打印收据,而不会询问任何内容
答案 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并打印出来。