使用ngx-print时是否可以禁用打印对话框?
ngx-print 禁用打印对话框实现说明
首先可以明确:该需求仅在特定场景下可实现,受浏览器安全策略限制,无法做到全浏览器通用。
可实现的前置条件
仅Chromium内核的浏览器(Chrome、Edge、国产双核浏览器的极速模式等)支持跳过打印对话框的静默打印能力,Firefox、Safari目前不开放对应权限。
具体实现步骤
- 第一步:给浏览器配置静默打印启动参数,在浏览器快捷方式的「目标」栏最后添加
--kiosk-printing配置,保存后重启浏览器即可生效,此时浏览器调用打印接口会直接使用默认打印机执行打印,不会弹出打印对话框 - 第二步:无需修改ngx-print组件的核心逻辑,正常按组件文档调用打印方法即可,ngx-print底层本质还是调用浏览器原生的
window.print()接口,只要浏览器配置了静默打印参数就会自动跳过对话框
不可实现的场景说明
如果不能修改终端用户的浏览器启动参数,该需求无法实现。浏览器出于安全和用户权限管控的要求,不允许网页脚本在未经用户确认的情况下直接调用打印机硬件,必须通过打印对话框让用户确认打印参数、选择打印机后才能执行打印。
静默打印方案仅适合内部封闭场景使用,比如企业内部的收银系统、仓储打单系统等,公网面向普通用户的Web应用不建议使用该方案,普通用户的浏览器不会配置对应启动参数,功能无法生效。
内容的提问来源于stack exchange,提问作者Jequex
相关产品推荐
相关产品推荐

