我最近自己也遇到了完全相同的问题。Google Chrome 具有所谓的“信息亭”模式。因此,它将在没有用户干预的情况下打印。
为此,请使用以下命令打开 Google Chrome(您需要找到 chrome 可执行文件,或用于 *nix 机器的 chrome 命令):
chrome.exe "http://www.example.com/mypage.php" --kiosk --kiosk-printing
这将打开一个没有任何工具栏、地址栏、多功能框等的窗口。
接下来,您需要进行页面打印。为此,自动打开一个打印对话框(为了演示,我将使用简单的 Javascript):
<script>
window.print();
</script>
在您跳转到您的开发环境之前,不允许window.print()
任何参数(即 URL)。
此代码打开一个打印对话框。但是,在 kiosk 模式下,将绕过打印对话框,页面将自动打印到默认打印机。
现在您提到了 PDF,很可能您是通过 PHP 生成它(如果您正在打印已发布/生成的文件),您可能会想“哦,我不能将 HTML 放入 PDF 中以执行 javascript”。你不需要!要解决打印正确页面的问题,方法如下:
将以下内容插入到用户被发送到的 HTML/PHP 页面(对于此解决方案,用户不需要访问 .pdf),在<head>
登陆/成功页面的 中:
<link rel="alternate" media="print" href="LINK TO PDF FILE">
如果你的页面中有上面的代码,当你执行时window.print();
,它会打印上面指定的页面。如果您不在本地保存 PDF,您可以将它放在一个临时目录中,该目录以某种方式(超出此问题的范围)根据基于时间或基于操作的计划清除,以防止磁盘空间堆积。
请记住以下几点:
- Kiosk 模式没有退出按钮。要退出,请按
ALT + F4
。
- 在信息亭模式下打印时,您需要
--kiosk
AND --kiosk-printing
。打印参数需要--kiosk
参数。
- 在 kiosk 模式下打印时,打印对话框出现然后突然消失是正常的。如果没有高级窗口分层等,就无法防止它。
我确信其他浏览器具有类似的绕过打印对话框的功能,但是,我发现谷歌浏览器在这种功能上效果最好。如果您在 Linux 机器上,Google 有一个 .deb 文件,您可以使用该命令在 Linux 上安装 Google Chrome sudo dpkg -i (package / downloaded .deb file path)
。Chromium --might-- 支持这种功能。据我所知,应该。
如果您需要其他帮助,请在下面的评论中留下您的问题,我会尽快回复。
我希望我有所帮助。如果我这样做了,请随时在您的左侧给我一张绿色支票。;)