Я знаю, как распечатать ZPL через PHP с помощью fsockopen, но у меня также есть несколько файлов ZPL, содержащих шрифты и графику, используемые на моих этикетках.
Может кто-нибудь сказать мне, как отправить сырой файл ZPL на принтер с помощью PHP? На данный момент я использую Zebranet Bridge, но я предпочитаю делать это с помощью PHP.
Предполагая, что вы знаете, как отправлять команды ZPL на принтер через PHP, и вы хотите печатать шрифт или графику теми же способами, вы должны
получить размер вашего ресурса и преобразовать его двоичные данные в шестнадцатеричную строку ASCII:
<?php
$res_size = 0;
$res_string = "";
$res_source = "http://php.net/images/logo.php";
$handle = fopen($res_source,"rb");
while (!feof($handle)) {
$data = fread($handle,1);
$res_size++;
$res_string .= bin2hex($data);
}
?>
составьте скрипт ZPL для загрузки преобразованного ресурса в память принтера:
<?php
require('bin2hex.php'); // script (1) above
$zpl_download = "^XA";
$zpl_download .= "~DYE:RES,P,P,";
$zpl_download .= $res_size;
$zpl_download .= ",,";
$zpl_download .= $res_string;
$zpl_download .= "^XZ";
?>
составьте скрипт ZPL для печати загруженного файла:
<?php
$zpl_print = "^XA";
$zpl_print .= "^FO50,50";
$zpl_print .= "^IME:RES.PNG";
$zpl_print .= "^XZ";
?>
написать сценарий PHP, требующий для отправки сценарии (2) и (3) выше $zpl_download
а также $zpl_print
к принтеру.
Других решений пока нет …