我有一个运行票房服务的网站,可以发行门票和报告。我想弄清楚如何将票证(当前为 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 生成它(如果您正在打印发布/生成的文件),您可能会想“哦,我不能将 HTML 放入 PDF 中来执行 javascript”。 你不需要! 要解决打印正确页面的问题,方法如下:

将以下内容插入到用户发送到的 HTML/PHP 页面中(对于此解决方案,用户 不需要访问 .pdf ),在登陆/成功页面的 <head> 中:
<link rel="alternate" media="print" href="LINK TO PDF FILE">

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

请记住以下几点:
  • Kiosk 模式没有退出按钮。要退出,请按 ALT + F4
  • 在 kiosk 模式下打印时,您需要 --kiosk --kiosk-printing 。打印参数 需要 --kiosk 参数。
  • 在 kiosk 模式下打印时,打印对话框是 正常 出现然后突然消失。如果没有高级窗口分层等,就无法阻止。

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

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

    我希望我有所帮助。如果我这样做了,请随时给我一张你左边的绿色支票。 ;)

    关于php - POS : get a website to print directly to a defined local printer/s,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18019219/

    10-12 02:10