Browser 从浏览器无声打印

Browser 从浏览器无声打印,browser,printing,Browser,Printing,在过去的几天里,我做了大量的研究,并在这个问题上给出了足够的见解。我试图实现的是使用打印按钮直接从web打印。我不想出现浏览器打印弹出窗口。将有2台打印机连接到我的web应用程序,我希望自动选择打印机 我知道使用PHP或没有任何浏览器扩展或active x插件是不可能的 我还考虑了一个解决方案,即在用户系统上安装java套接字客户端应用程序时,使用web套接字发送打印请求 请为我的问题提供任何节省时间的解决方案我已经研究了chrome扩展,fire fox插件-Faizan Afzal 3月28

在过去的几天里,我做了大量的研究,并在这个问题上给出了足够的见解。我试图实现的是使用打印按钮直接从web打印。我不想出现浏览器打印弹出窗口。将有2台打印机连接到我的web应用程序,我希望自动选择打印机

我知道使用PHP或没有任何浏览器扩展或active x插件是不可能的

我还考虑了一个解决方案,即在用户系统上安装java套接字客户端应用程序时,使用web套接字发送打印请求


请为我的问题提供任何节省时间的解决方案

我已经研究了chrome扩展,fire fox插件
-Faizan Afzal 3月28日15:54 在上面的评论中,您提到您已经研究了Chrome扩展和FireFox插件,但是这些浏览器中已经内置了禁用打印对话框的功能。
如果您正在制作的web应用程序将在受控环境中运行(在何处管理哪些浏览器访问它以及它们的配置方式),您可以非常轻松地执行此操作。

Chrome
首先,转到
chrome://settings/
并将主页更改为web应用程序。接下来,在桌面上为Chrome浏览器创建一个快捷方式,然后右键单击它以打开属性窗口。在“目标”输入字段中,将
--kiosk--kiosk printing
添加到应用更改,关闭所有Chrome窗口并单击快捷方式。这将使您进入全屏(信息亭模式)当您尝试打印时,它会自动在默认打印机上打印,而不会显示弹出窗口。

FireFox
在FireFox上,转到
about:config
并同意任何警告消息。然后,右键单击页面上的某个位置并创建一个“
新建->布尔值
”。它将提示您输入名称和状态。对于名称,请输入
print。对于状态,请始终\u print\u silent
,然后将其设置为true。然后,您需要保存更改并重新启动已打开的任何FireFox窗口。如果您尝试打印某些内容,则不再需要显示弹出窗口,并将在t上自动打印默认打印机。

如果以这种方式配置了这两种浏览器中的任何一种,则可以使用标准的
window.print();
JavaScript方法进行打印,而无需任何服务器端交互。

批处理文件?
如果您想要更简单的方法来完成这些操作,可以使用这两个命令提示符脚本,它们将自动配置和/或运行它们以满足您的需要:

Chrome:

FireFox:


简而言之,通过套接字连接处理HTTPS是很棘手的,因为混合内容限制和不断变化的SSL标准,所以从头开始编写它以在所有平台上工作可能会让人望而生畏

我还考虑了一个解决方案,即在用户系统上安装java套接字客户端应用程序时,使用web套接字发送打印请求

这就是QZ托盘的工作原理

qz.websocket.connect().then(function() { 
   return qz.printers.find("zebra");              // Pass the printer name into the next Promise
}).then(function(printer) {
   var config = qz.configs.create(printer);       // Create a default config for the found printer
   var data = ['^XA^FO50,50^ADN,36,20^FDRAW ZPL EXAMPLE^FS^XZ'];   // Raw ZPL
   return qz.print(config, data);
}).catch(function(e) { console.error(e); }
上述示例特定于原始打印,但该应用程序也适用于其他格式(HTML、PDF、图像)

项目页面:

完整免责声明……作为上述插件的作者,我认为公平地说PrintNode的任务几乎相同。这两个插件都是开源的,但都有支持它们的商业服务支持

项目页面:

您将无法覆盖客户端浏览器的打印功能。PHP/Java与此无关。想法是让Java客户端应用程序处理打印请求。您想构建一个Java web客户端,调用网站并打印页面?我已经研究了chrome扩展,fire fox插件,一个PHP web cl客户端工具,它在客户端pc上安装一个小应用程序,然后您可以从web上安装。但对我来说,没有一个解决方案是可靠的。我有一个想法,构建一个PHP套接字服务器和一个Java套接字客户端。客户端将与服务器建立连接,每当服务器收到打印请求时,它都会将打印数据传递到Java客户端,在那里可以处理整个打印功能套接字服务器打印有什么意义?在Java中,您可以非常轻松地将HTML呈现为可打印格式。您只需要一个应用程序即可调用它。
FOR /D %%G in ("%APPDATA%\Mozilla\Firefox\Profiles\*.default") DO SET prof=%%G
cd %prof%
echo user_pref("print.always_print_silent", true);>>prefs.js
cd \..
cd Program Files (x86)\Mozilla Firefox
firefox.exe
qz.websocket.connect().then(function() { 
   return qz.printers.find("zebra");              // Pass the printer name into the next Promise
}).then(function(printer) {
   var config = qz.configs.create(printer);       // Create a default config for the found printer
   var data = ['^XA^FO50,50^ADN,36,20^FDRAW ZPL EXAMPLE^FS^XZ'];   // Raw ZPL
   return qz.print(config, data);
}).catch(function(e) { console.error(e); }