我在过去的几天里已经研究了很多,并且在这个问题上已经给了我很多的支持。我想要实现的是使用打印按钮直接从网上打印。我不想浏览器打印弹出窗口出现。我的网络应用程序将连接2台打印机,我想自动选择打印机。
我知道使用PHP或没有任何浏览器扩展或活动x插件是不可能的。
我还想到了在用户系统上安装Java套接字客户端应用程序时使用Web套接字发送打印请求的解决方案。
请建议我保存解决问题的方法
答案 0 :(得分:3)
我已经查看了chrome扩展,fire fox addon
- Faizan Afzal 3月28日15:54
在上面的评论中,您提到您已经查看过Chrome扩展程序和FireFox插件,但是这些浏览器中已经内置了禁用打印对话框的功能。
如果您使用的是Web应用程序&# 39;重新制作将在受控环境中运行(您管理哪些浏览器访问它以及如何配置它们),您可以相当容易地执行此操作。
Chrome
首先,转到chrome://settings/
并将主页更改为Web应用程序。接下来,在桌面上为Chrome浏览器创建快捷方式,然后右键单击它以打开属性窗口。在'目标'输入字段,将 --kiosk --kiosk-printing
添加到该位置的末尾。应用更改,关闭所有Chrome窗口,然后单击快捷方式。这应该让你全屏(自助服务终端模式),当你尝试打印时,它应该自动打印在默认打印机上,而不显示弹出窗口。
FireFox
在FireFox上,转到about:config
并同意任何警告信息。然后,右键单击页面上的某个位置并创建一个" New -> Boolean
"。它会提示您输入名称和州。对于名称,输入print.always_print_silent
,对于州,将其设置为true。然后,您需要保存更改并重新启动已打开的任何FireFox窗口。如果您尝试打印某些内容,则不再需要显示弹出窗口,并且将自动在默认打印机上打印。
如果使用这些方式配置这些浏览器,您可以使用标准的window.print();
JavaScript方法,无需任何服务器端交互即可打印。
批处理文件?
如果您想要更简单的方法来执行这些操作,可以使用这两个命令提示符脚本,它们将根据您的需要自动配置和/或运行它们:
Chrome:< / I>
cd Program Files (x86)\Google\Chrome\Application
chrome.exe --kiosk --kiosk-printing
火狐:的
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
答案 1 :(得分:0)
简而言之,由于内容混合的限制和SSL标准的更改,通过套接字连接处理HTTPS是棘手的,因此从头开始编写以在所有平台上工作可能会令人生畏。
我还考虑了一种在用户系统上安装Java套接字客户端应用程序时使用Web套接字发送打印请求的解决方案。
这正是QZ托盘的工作方式。
import * as express from 'express';
import DB from './db';
const router = express.Router();
router.get('localhost:8080/api/Data_Schedules',async(req, res)=>{
try{
let Data_Schedules = await DB.Data_Schedules.all();
res.json(Data_Schedules)
}
catch(e){
res.sendStatus(500);
}
})
export default router;
以上示例仅适用于原始打印,但该应用程序也适用于其他格式(HTML,PDF,图像)
项目页面: https://github.com/qzind/tray
完全免责声明。...作为上述插件的作者,我发现提到PrintNode几乎完成相同的任务时,我感到很公平。这两个插件都是开源的,但是得到支持它们的商业服务的支持。