POS:获取一个网站,直接打印到已定义的本地打印机

时间:2013-08-02 14:19:43

标签: php jquery printing local

我有一个运行票房服务的网站,可以发行票证和报告。我试图弄清楚如何将门票(目前为PDF)直接发送到本地/客户端PC上的指定打印机。

我已经关注了许多旧的/死的/无用的链接,并没有找到任何最新的解决方案,尽管许多诱人的希望闪烁。

场景是这样的:远程托管网站 - 连接了1个或更多用户 - 网页生成票证(PDF),用于静默发送到用户PC(不是默认打印机)上的指定打印机(无需额外点击打印提示)。

我知道PHP没有连接到客户端PC,但有没有办法让网页(或许通过jQuery)连接到已安装的脚本/服务?

我认为本地PC上的脚本(建立可信链接,设置要使用的打印机等)将从Web服务器接收数据/文件,然后只要它在同一个地方就处理它每台机器。然后可以将此(本地)脚本添加到需要运行该服务的任何PC。这项工作需要由正在发送的文件触发,而不是每隔几秒钟就有一个脚本/服务轮询一个位置。

任何指针都会非常感激。

编辑:我已经尝试了jZebra java applet,但只是在打破之前打印了一次。感兴趣,如果有人真正让它工作(以及如何)。

1 个答案:

答案 0 :(得分:11)

我最近自己遇到了同样的问题。谷歌浏览器具有所谓的“自助服务终端”模式。因此,它将在没有用户干预的情况下打印。

要执行此操作,请使用以下命令打开Goog​​le 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,则可以将其放在临时目录中,该目录以基于时间或基于操作的计划清除(以某种方式超出此问题的范围),以防止磁盘空间累积。

请记住以下几点:

  • Kiosk模式没有退出按钮。要退出,请按ALT + F4
  • 在自助服务终端模式下打印时,您需要--kiosk AND --kiosk-printing。打印参数需要 --kiosk参数。
  • 在自助服务终端模式下打印时,打印对话框出现正常,然后突然消失。没有高级窗口分层等等就无法阻止它。

我确信其他浏览器具有类似的功能可以绕过打印对话框,但是,我发现Google Chrome在此类功能中效果最佳。如果您在Linux计算机上,Google有一个.deb文件,您可以使用命令sudo dpkg -i (package / downloaded .deb file path)在Linux上安装Google Chrome。 Chromium - 可能 - 支持这种功能。据我所知,它应该。

如果您需要其他帮助,请在下面的评论中留下您的问题,我会尽快回复。

我希望我帮助过。如果我这样做,请随时给我左边的绿色支票。 ;)