我的要求是每当单击提交按钮时直接打印发票。由于整天都有太多的发票,因此始终要单击打印,时间是金钱,正如他们所说的:/,这是我的JS代码,打印div的内容很好。但是,如何在不进入"打印预览"对话框的情况下直接打印它?
JS代码
$scope.printFactureClient=function(){
var printContents = document.getElementById('printFacture').innerHTML;
var popupWin = window.open('Facture Clinet', '_blank', 'width=300,height=300');
popupWin.document.open();
popupWin.document.write('<html><head><link rel="stylesheet" type="text/css" href="../design/mainPage.css"><link rel="stylesheet" type="text/css" href="../bootstrap/bootstrap/dist/css/bootstrap.min.css"></head><body onload="window.print()">' + printContents + '</body></html>');
popupWin.document.close();
}
还是应该从浏览器中处理?我的客户端浏览器是在Windows 10上安装的Chrome。感谢任何帮助!它阻止了我的工作流
您需要服务器将数据发送到浏览器作为响应。浏览器不允许不首先进行打印预览即可打印。绕过的唯一方法是通过服务器响应,该响应将涉及编写该服务器的响应方法以返回将在客户端上自动下载的字节流。
本文是关于如何使用.NET服务器进行操作的快速而简单的教程-net/
当然,您几乎可以用任何语言/服务器进行此操作。
浏览器可以完全自由实现windows.print()
。
不幸的是,Chrome尚未暴露任何API来操纵打印对话框。但是,如果您控制了Chrome执行环境(即您可以控制Chrome的启动方式,即通过快捷方式更改其命令行参数(,则可以使用--args --disable-print-preview
命令行参数运行chrome.exe
。其他每个解决方案甚至都hackier(通过nativeMessaging
扩展API发送数据到实例化System.Drawing.Printing.PrintDocument
的.NET应用程序(。
firefox具有称为 print.always_print_silent
的浏览器配置覆盖物,该浏览器在通过firefox扩展时不会弹出打印对话框。