从iPhone(远程网站)到本地打印机的PHP mike42 / escpos-php打印

时间:2019-05-20 20:03:21

标签: php printing pos escpos

我有一个网站(在远程服务器上),并且用户可以在iPhone(Safari)上查看它。

我试图使用户能够从该站点向POS打印机(REGO热敏打印机,RG-MTP58B)打印文本文件。该打印机不支持AirPrint,而是wifi打印机,并且位于172.20.10.2:9100 IP和端口上。

据我了解,我不能直接从服务器打印,因为打印机不是在服务器网络中,而是在本地网络中。

我正在使用以下软件包:https://github.com/mike42/escpos-php,因为我认为它是唯一仍被维护的软件包。

我已经尝试过这种方式:

$connector = new FilePrintConnector("php://stdout");
$printer   = new Printer($connector);
$printer->text("Hello World!\n");
$printer->cut();
$printer->close();

但这只会显示白页,而打印机不会收到任何东西。

我尝试将文件保存在服务器中,然后在Safari中打开文件,但Safari没有提供打印文件的选项(甚至不在“共享”区域)。

所以我发现包Author做到了:

$connector = new DummyPrintConnector();
$profile = CapabilityProfile::load("TSP600");
$printer = new Printer($connector);
$printer->text("Hello world!\n");
$printer->cut();
// Get the data out as a string
$data = $connector->getData();
// Return it, check the manual for specifics.
header('Content-type: application/octet-stream');
header('Content-Length: '.strlen($data));
echo $data;
// Close the printer when done.
$printer->close();

(原始代码:here

在这种情况下,它将创建一个文件,并显示如下:

enter image description here

同样,它没有提供打印它的选项(即使在“共享”区域也没有)。

文件内容是二进制文件:

<0x1b>@Hello world!
<0x1d>VA<0x03>

如何将这些数据发送到打印机?

2 个答案:

答案 0 :(得分:1)

这里有一个可能的解决方案是创建一个简单的应用程序,该应用程序具有一个webview组件,可打开指向您的服务器网站的URL。

  1. 为iPhone创建一个简单的Webview应用。您可以对服务器使用wkwebview 参见wkwebview

  2. 从Web视图中读取收据content并解析出收据。

    -确保使用Esc/POS codes格式化收据文本,以格式化文本,进纸线和裁切纸。几乎每个收据打印机都使用Esc / POS代码,许多像这样的低成本热敏收据打印机实际上都使用Seiko Epson Corporation(SEC)引擎。这就是为什么此PHP代码可能在许多打印机上都能很好地工作的原因。

  3. 使用直接Socket连接到iPhone应用程序与本地网络上的打印机。这样,您可以确保电话和打印机都在同一网络上。

如果您不喜欢敏捷,也可以使用XamarinApache Cordova以及其他应用程序来创建应用。

答案 1 :(得分:0)

我联系了打印机(Rego打印机)制造商,基本上他们不允许外部连接,这意味着您必须在本地打印。