问题描述
我有一台网络打印机(POS 打印机)连接到我的路由器,我有打印机的 IP 和端口。我想直接从网络服务器发送打印说明。例如,如果我访问 example.com/print.php,它会将指令发送到我的本地网络打印机并开始打印。 重要的是可以从同一网络上的任何设备访问此网页,并且能够将打印指令发送到我的本地网络打印机。
这是我目前所做的,使用 localhost/print.php 我可以使用任何浏览器成功地将打印指令发送到本地网络打印机,因为它们都在同一个网络中。但是 localhost 在 iPad 上不起作用。
This is what I have so far,printing via localhost using computer browsers.
我正在使用此 GitHub 代码 escpos-php 从本地主机成功打印到本地网络打印机,这是代码示例:
<?php
require __DIR__ . '/vendor/autoload.php';
use Mike42\Escpos\Printer;
use Mike42\Escpos\PrintConnectors\NetworkPrintConnector;
try {
$connector = new NetworkPrintConnector("192.168.1.87",9100);
$printer = new Printer($connector);
$printer -> text("Hello World!\n");
$printer -> cut();
$printer -> close();
} catch (Exception $e) {
echo "Couldn't print to this printer: " . $e -> getMessage() . "\n";
}
?>
现在,这段代码很容易执行并且工作起来很神奇,但是当我尝试从我的服务器运行相同的代码时,它无法连接到打印机,因为它们不在同一个网络中。我查看了此代码的作者常见问题解答部分并找到了此答案。
解决方案 1:构建您的应用程序,以便服务器可以看到您的打印机。
解决方案 2:使用在客户端运行的应用程序来传送打印数据。
第二种解决方案很好地解决了这个问题,但这正是我想要实现的。
This is what I'm looking for,printing via the webserver using any device within the local network.
请注意,连接到路由器的计算机不再起作用。
当我访问 example.com/print.php 网页时,它通过网络服务器向打印机发送指令,但正如您在本场景中看到的,服务器无法与打印机通信。
在第一个解决方案中,作者提供了以下选项:
选项 1:改为在 LAN 上运行您的服务器,并阅读上面有关通过网络打印的部分
选项 2:设置 VPN 以便您的云托管服务器也可以访问 LAN
选项 3:通过其他一些安全隧道将打印机暴露给服务器,通过 SSH 或 TLS
我猜第一个选项不适合我,但第二个选项是设置 VPN,以便我的云托管服务器也可以访问 LAN。这是一个很好的解决方案,但在某些时候,会有数百名像我这样的用户通过同一个网络服务器使用数百台打印机,我猜在这种情况下使用 VPN 效果不佳。
此时第三个选项很有希望,如果计算机不再运行,我如何通过安全隧道通过 SSH 或 TLS 将打印机暴露给服务器。
是否有任何简单的方法可以仅使用打印机的 IP 和端口将打印指令从网络服务器发送到本地网络打印机?如果这意味着将打印机暴露在互联网上或移除防火墙。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)