这个答案展示了如何在Google Chrome中启用静默打印。然而,我有两个网页需要使用两个不同的打印机进行无人工干预的静默打印。在调用window.print()
之前是否有一种自动选择打印机的方法?如果真的必要,我可以编写一个Chrome扩展程序。
这个答案展示了如何在Google Chrome中启用静默打印。然而,我有两个网页需要使用两个不同的打印机进行无人工干预的静默打印。在调用window.print()
之前是否有一种自动选择打印机的方法?如果真的必要,我可以编写一个Chrome扩展程序。
如果您在一个熟悉的环境中,并且拥有足够的权限(我假设您知道要使用的打印机),则可以尝试通过命令行更改它。
为此,您应该调用:
@RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"
打印机名称必须与控制面板中显示的值相同。
如果启用了适当的ActiveX控件,可以使用以下方法从JavaScript调用命令行:
var run=new ActiveXObject('WSCRIPT.Shell').Run("commands to run");
var objShell = new ActiveXObject("shell.application");
objShell.ShellExecute("cmd.exe", 'RunDLL32.EXE printui.dll,PrintUIEntry /y /n "Printer name"', "C:\\WINDOWS\\system32", "open", 1);
欲了解更多信息,请访问http://msdn.microsoft.com/en-us/library/windows/desktop/gg537745(v=vs.85).aspx
我没有测试过,祝好运!
最终我使用F#编写了一个服务器,并通过WebSocket进行通信。
使用这种技术,您可以编写可以实际枚举网络上的打印机并与硬件通信的代码,同时仍在运行您的Web应用程序,并且您可以将桌面应用程序中构建的新JS API公开到您的Web应用程序中。
然后,为使其智能化,您可以使您的Web应用程序在两个环境中运行,即在桌面应用程序中运行或直接在浏览器中运行。其中,在桌面应用程序中运行具有高级扩展功能。
然后,您可以以多种方式部署该应用程序。例如,在Windows 10+上,您可以拥有公司的私人Windows Store,并将应用程序部署到您的私人Windows Store中,可以通过Windows上的组策略设置安装私人Windows Store。
或者,您可以拥有私人npm存储库并脚本安装/更新您的应用程序。甚至可以使用老派技术,如Microsoft Click Once安装等等。
但是,为您的Web应用程序提供最大的能力的方法是为其提供一个自定义浏览器,并且使用Chromium嵌入式框架非常容易。
在C#中,您可以在不到60秒的时间内启动一个简单的Chrome包装器。
例如,使用.Net 6+和EdgeSharp,您可以将其跨平台运行在Linux、Windows和MacOsx上,并且还可以轻松地将其移植到Xamarin和IOS上,以便在手机、电脑、Mac和平板电脑上拥有这种功能。