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

Php POS:让网站直接打印到定义的本地打印机,php,jquery,printing,local,Php,Jquery,Printing,Local,我有一个网站,提供票房服务,发行门票和报告。我正在尝试找出如何将票据(当前为PDF)直接发送到本地/客户端PC上的指定打印机 我跟踪了许多旧的/死的/无用的链接,没有找到任何最新的解决方案,尽管有许多诱人的希望之光 场景是这样的:远程托管网站-连接了1个或多个用户-网页生成票证(PDF),该票证以静默方式发送到用户pc上的指定打印机(不是默认打印机)(无需额外点击打印提示) 我知道PHP不会连接到客户端pc,但是有没有一种方法可以让网页(可能通过jQuery)连接到已安装的脚本/服务 我认为本地

我有一个网站,提供票房服务,发行门票和报告。我正在尝试找出如何将票据(当前为PDF)直接发送到本地/客户端PC上的指定打印机

我跟踪了许多旧的/死的/无用的链接,没有找到任何最新的解决方案,尽管有许多诱人的希望之光

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

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

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

任何指点都将不胜感激


编辑:我试过jzebrajavaapplet,但在它崩溃之前只打印了一次。有兴趣知道是否有人真的使用了它(以及如何使用)。

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

要执行此操作,请使用以下命令打开Google Chrome(您需要找到Chrome可执行文件,或用于*nix机器的Chrome命令):

这将打开一个没有任何工具栏、地址栏、综合框等的窗口

接下来,您需要进行页面打印。为此,自动打开一个打印对话框(为了演示,我将使用简单的Javascript):

如果页面中有上述代码,则在执行
window.print()时,它将打印上面指定的页面。如果您不将PDF保存在本地,您可以将其放入临时目录中,该目录在基于时间或基于操作的计划中以某种方式被清除(超出本问题的范围),以防止磁盘空间累积

记住以下几点:

  • 信息亭模式没有退出按钮。要退出,请按ALT+F4
  • 在kiosk模式下打印时,您需要同时使用
    --kiosk
    --kiosk打印
    。打印参数需要
    --kiosk
    参数
  • 在kiosk模式下打印时,打印对话框出现然后突然消失是正常的。如果没有高级的窗口分层等等,它是无法预防的
  • 我相信其他浏览器也有类似的功能来绕过打印对话框,但是,我发现谷歌浏览器在这类功能中效果最好。如果您的浏览器安装在Linux机器上,Google有一个.deb文件,您可以使用命令
    sudo dpkg-i(package/downloaded.deb file path)
    在Linux上安装Google Chrome。Chromium可能支持这种功能。据我所知,应该是这样的

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


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

    不,不太可能。jquery受同源安全策略的限制。除非你的打印机有一个JSONP打印接口,你没有实际的方法告诉浏览器自动打印到那个打印机而不需要用户干预——如果可能的话,垃圾邮件发送者会烧掉你的纸张,告诉你俄罗斯新娘想要卖给你由已故尼日利亚政府官员提供的boner药丸。他们的意图/想法是使用类似jQuery的东西将文件传递到本地机器上运行的脚本/软件,然后再将其发送到打印机。在本地安装脚本可以提供接受传入文件然后处理它的安全级别。js无法执行本地程序。从远程Web服务器加载的js将无法加载任何“本地”编码或调用它。可能重复的否它不是重复的:问题说明我需要能够选择要打印到特定pc上的哪台打印机,并且正在查看将文件传输到驻留在客户端pc上的另一个脚本/软件。这是我所见过的信息量最大的答案之一。我从来没有听说过kiosk模式。谢谢你的夸奖。无论答案的信息量有多大,我都会尽力帮助人们。没有愚蠢的问题。再次感谢您的建设性反馈。:)谢谢你提供了一个非常翔实和有趣的答案,我从来都不知道Chrome有这个功能o) 不幸的是,我有两个问题:1)windows.print不接受任何参数,无法将其设置为打印到特定打印机(在我的情况下是票据打印机)。2) 我经常调整浏览器的大小,以便能够同时阅读订单的电子邮件。不过,感谢您对Kiosk模式的深入了解@谢谢你的建设性反馈!我在上面的答案中还包括了选择打印页面的方法。顺便说一下,如果我的答案解决了你的问题,请单击它左边的绿色复选标记。它会给我声誉(这是我需要的,因此我最终可以发表评论以获得更多信息,如版本等),并将其标记为正确的答案,或提供了最多的信息。谢谢!:)@网络怪人很好的解决方案。我运行了一个与OP类似的应用程序,没有打开额外的页面,而是在iframe中加载一个pdf,并从kiosk模式调用print函数
    chrome.exe "http://www.example.com/mypage.php" --kiosk --kiosk-printing
    
    <script>
      window.print();
    </script>
    
    <link rel="alternate" media="print" href="LINK TO PDF FILE">