POS:让网站直接打印到指定的本地打印机


POS: get a website to print directly to a defined local printer/s

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

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

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

我知道PHP无法连接到客户端pc,但有没有一种方法可以让网页(可能通过jQuery)连接到已安装的脚本/服务?

我在想,本地PC上的脚本(它建立了一个受信任的链接,设置了要使用的打印机等)会从web服务器接收数据/文件,然后只要它在每台机器上的同一位置就对其进行处理。然后,这个(本地)脚本可以添加到任何需要运行该服务的PC上。这项工作需要由正在发送的文件触发,并且没有每隔几秒钟轮询一次位置的脚本/服务。

任何建议都将不胜感激。

编辑:我试过jZebra java小程序,但在它坏之前只打印过一次。感兴趣的是,是否有人真的做到了(以及如何做到)。

我最近也遇到了同样的问题。谷歌浏览器有所谓的"信息亭"模式。因此,它将在没有用户干预的情况下打印。

要做到这一点,请使用以下命令打开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生成的(如果你打印发布/生成的文件),你可能会想"哦,我不能在PDF中放入HTML来执行javascript"你不需要要解决打印正确页面的问题,方法如下:

在登录/成功页面的<head>中,将以下内容插入用户发送到的HTML/PHP页面(对于此解决方案,用户不需要访问.pdf):

<link rel="alternate" media="print" href="LINK TO PDF FILE">

如果您的页面中有上述代码,当您执行window.print();时,它将打印上面指定的页面。如果你不在本地保存PDF,你可以把它放在一个临时目录中,这个目录以某种方式(不在这个问题的范围内)按照基于时间或基于操作的时间表清除,以防止磁盘空间增加。

请记住以下几点:

  • Kiosk模式没有退出按钮。要退出,请按ALT + F4
  • 在kiosk模式下打印时,需要同时使用--kiosk--kiosk-printing。打印参数需要--kiosk参数
  • 在kiosk模式下打印时,打印对话框出现然后突然消失是正常。如果没有高级的窗户分层之类的东西,它是无法预防的

我相信其他浏览器也有类似的功能来绕过打印对话框,然而,我发现谷歌Chrome在这类功能中效果最好。如果你在Linux机器上,谷歌有一个.deb文件,你可以使用命令sudo dpkg -i (package / downloaded .deb file path)在Linux上安装谷歌Chrome。Chromium可能支持这种功能。据我所知,应该是这样。

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

我希望我能帮上忙。如果我这样做了,请随意在你左边给我一张绿色支票。;)