HTML / Javascript 一键打印(无对话框)

问题描述 投票:0回答:7

是否可以有一个绕过打印对话框的打印选项?

我正在一个封闭的系统上工作,希望能够预先定义打印对话框设置;单击按钮后立即处理打印。

根据我所读到的内容,每个浏览器的执行方式都不同。例如,IE 将使用 ActiveX。 Chrome / Firefox 需要扩展。基于此,看来我必须用 C++ 编写一个应用程序,它可以处理浏览器传递的参数,以便以正确的格式自动打印(对于标签)。然后我必须将其重写为 Chrome / Firefox 的扩展。最终结果是我们封闭系统上的用户必须根据他们使用的浏览器下载/安装这些功能。

我希望有另一种方法可以解决此问题,但此任务很可能违反浏览器安全问题。

html printing
7个回答
19
投票

我最终实现了一个自定义应用程序,其工作方式与 Nexus Mod Manager 非常相似。我编写了一个注册自定义“应用程序 URI 方案”的 C# 应用程序。其工作原理如下:

用户点击网站上的“打印”。
  1. 网站将用户链接到“CustomURL://Print/{ID}
  2. 应用程序由 Windows 通过自定义 uri 方案启动。
  3. 应用程序与预先配置的服务器通信以确认打印请求,并在我的例子中获取实际的打印命令。
  4. 应用程序然后使用
  5. C# RawPrinterHelper
  6. 类将命令直接发送到打印机。
  7. 此方法需要用户进行初始下载,并在首次启动应用程序时从 Windows 发出单个安全提示。我还实现了一些 JavaScript 魔法,让它检测打印作业是否已处理。如果不是,它会要求他们下载应用程序。


9
投票

    打开文件>页面设置
  • 将所有页眉和页脚设为空白
  • 将边距设置为 0(零)
  • 在 Firefox 的地址栏中输入 about:config
  • 搜索
  • print.always_print_silent

    并双击它

    
    

  • 将其从 false 更改为 true
  • 这可以让您跳过出现的“打印”弹出框,以及跳过必须单击“确定”的步骤,自动打印正确尺寸的单据。
  • 如果
  • print.always_print_silent

    没有出现

    
    

      右键单击首选项窗口的空白区域
    • 选择新建 > 布尔值
    • 输入“print.always_print_silent”作为名称(不带引号)
    • 点击确定
    • 为值选择 true
  • 您可能还想查看列出的内容
  • print.print_printer

    
    

    您可能必须选择“通用/仅文本”(或任何收据打印机的名称)

8
投票

这个子打印功能有效地取代了默认的打印功能。

<script language='VBScript'> Sub Print() OLECMDID_PRINT = 6 OLECMDEXECOPT_DONTPROMPTUSER = 2 OLECMDEXECOPT_PROMPTUSER = 1 call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) End Sub document.write "<object ID='WB' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A96B-00C04FD705A2'></object>" </script>

然后使用Javascript的window.print();绑定到超链接或按钮来执行打印命令。

如果您想在页面加载时自动打印,请将代码放在标签下方。

<script type="text/javascript"> window.onload=function(){self.print();} </script>



4
投票
http://justtalkaboutweb.com/2008/05/09/javascript-print-bypass-printer-dialog-in-ie-and-firefox/

如果您无论如何都被允许做这样的事情,这将是一个安全问题,因为恶意软件脚本可以悄悄地将打印作业发送到访问者的打印机。


2
投票
无缝打印

Firefox 插件,它将从 Web 应用程序打印某些内容,而不显示打印对话框。

打开火狐浏览器
  1. 搜索插件名称无缝打印并安装
  2. 成功安装后,当用户想要打印任何内容时,打印窗口将被绕过。

0
投票

打开火狐浏览器。
  1. 在 url 文本框中输入 about:config
  2. 搜索并输入首选项名称 print.always_print_silent。修改布尔值并将其设置为 true 或启用它。
  3. 关闭并再次打开您的 Firefox 浏览器。如果正确,此方法不会进入kiosk模式,但会跳过打印设置对话框显示,一键打印。 利用您作为网站开发人员的能力,通过编写编程脚本来自动打印。

-1
投票
https://github.com/eKoopmans/html2pdf.js

) 考虑到您有权访问它,您可以执行类似的操作(取自 github 存储库):

var element = document.getElementById('element-to-print'); html2pdf(element);

	
© www.soinside.com 2019 - 2024. All rights reserved.