我有一个运行票房服务的网站,可以发行票证和报告。我试图弄清楚如何将门票(目前为PDF)直接发送到本地/客户端PC上的指定打印机。
我已经关注了许多旧的/死的/无用的链接,并没有找到任何最新的解决方案,尽管许多诱人的希望闪烁。
场景是这样的:远程托管网站 - 连接了1个或更多用户 - 网页生成票证(PDF),用于静默发送到用户PC(不是默认打印机)上的指定打印机(无需额外点击打印提示)。
我知道PHP没有连接到客户端PC,但有没有办法让网页(或许通过jQuery)连接到已安装的脚本/服务?
我认为本地PC上的脚本(建立可信链接,设置要使用的打印机等)将从Web服务器接收数据/文件,然后只要它在同一个地方就处理它每台机器。然后可以将此(本地)脚本添加到需要运行该服务的任何PC。这项工作需要由正在发送的文件触发,而不是每隔几秒钟就有一个脚本/服务轮询一个位置。
任何指针都会非常感激。
编辑:我已经尝试了jZebra java applet,但只是在打破之前打印了一次。感兴趣,如果有人真正让它工作(以及如何)。
答案 0 :(得分:11)
我最近自己遇到了同样的问题。谷歌浏览器具有所谓的“自助服务终端”模式。因此,它将在没有用户干预的情况下打印。
要执行此操作,请使用以下命令打开Google Chrome(您需要找到适用于* nix计算机的chrome可执行文件或chrome命令):
chrome.exe "http://www.example.com/mypage.php" --kiosk --kiosk-printing
这将打开一个没有任何工具栏,地址栏,多功能符号等的窗口。
接下来,您需要打印页面。为此,自动打开打印对话框(为了演示,我将使用简单的Javascript):
<script>
window.print();
</script>
在您跳转到开发环境之前,window.print()
会不允许任何参数(即网址)。
此代码打开一个打印对话框。但是,在自助服务终端模式下,将绕过打印对话框,页面将自动打印到默认打印机。
现在你提到了一个PDF,很有可能,你通过PHP生成它(如果你打印已发布/生成的文件),你可能会想“哦,我不能把HTML放在PDF中来执行javascript” 。 您不需要!要解决打印正确页面的问题,请按以下步骤操作:
将以下内容插入到用户发送到的HTML / PHP页面中(对于此解决方案,用户不需要访问.pdf ),在<head>
中登陆/成功页面:
<link rel="alternate" media="print" href="LINK TO PDF FILE">
如果页面中包含上述代码,则执行window.print();
时,将打印上面指定的页面。如果您不在本地保存PDF,则可以将其放在临时目录中,该目录以基于时间或基于操作的计划清除(以某种方式超出此问题的范围),以防止磁盘空间累积。
请记住以下几点:
ALT + F4
。--kiosk
AND --kiosk-printing
。打印参数需要 --kiosk
参数。我确信其他浏览器具有类似的功能可以绕过打印对话框,但是,我发现Google Chrome在此类功能中效果最佳。如果您在Linux计算机上,Google有一个.deb文件,您可以使用命令sudo dpkg -i (package / downloaded .deb file path)
在Linux上安装Google Chrome。 Chromium - 可能 - 支持这种功能。据我所知,它应该。
如果您需要其他帮助,请在下面的评论中留下您的问题,我会尽快回复。
我希望我帮助过。如果我这样做,请随时给我左边的绿色支票。 ;)