我有一个网站(在远程服务器上),用户可以在 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 不提供打印它的选项(甚至在“共享”区域中也不提供)。
所以我发现包作者这样做:
$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();
(原代码:这里)
在这种情况下,它会创建一个文件并显示如下:
同样,它没有提供打印它的选项(甚至在“共享”区域中也没有)。
文件内容是二进制文件:
<0x1b>@Hello world!
<0x1d>VA<0x03>
如何将此数据发送到打印机?