как отформатировать вывод печати в php - PullRequest
0 голосов
/ 28 января 2019

Я новичок в php и создал код, который берет некоторую информацию из базы данных и преобразует ее в штрих-код code128.Вывод его на страницу не проблема:

$finalvar = '<p>'.bar128(stripcslashes($row['Flowers'])).'</p>';
echo $finalvar; 

enter image description here

Пока все хорошо.Теперь я хочу напечатать этот штрих-код на сетевом принтере и использовать это:

$port = "9100";
$host = "10.64.33.33";
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

if ($socket === false) {
    echo "socket_create() failed, reason: " . socket_strerror(socket_last_error    ()) . "\n";
} else {
    echo "OK.\n";
}
$result = socket_connect($socket, $host, $port);
if ($result === false) {
    echo "socket_connect() failed.\nReason: ($result) " . socket_strerror    (socket_last_error($socket)) . "\n";
} else {
    echo "OK.\n";
}
socket_write($socket, $finalvar);
socket_close($socket);

Печать работает отлично, но вместо печати штрих-кода, как на картинке, бумага выглядит так:

<p><table cellpadding=0 cellspacing=0><tr><td><div class="128"
style"border-"

Я думаю, что это скорее форматирование, но я не нашел ничего, что сработало.Как я могу напечатать $finalvar как на картинке, показанной выше?

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Для тех, кому интересно, как я это сделал:

Большинство принтеров этикеток поддерживают свои собственные языки, такие как ZPL (язык программирования Zebra) или DPL (язык программирования Datamax).Вы можете просто отправить команду для преобразования и печати вашей переменной.Вам даже не нужно конвертировать его в штрих-код, принтер сделает это за вас.Вам нужно будет отправить 1 строку ZPL на ваш принтер.ZPL очень прост, и вы можете убедиться в этом здесь .Как вы можете видеть по приведенной мной ссылке, вы можете создать штрих-код только с помощью этой команды:

^XA^BY5,2,270^FO100,550^BC^FD$yourvariable^FS^XZ

В моем случае я использовал этот точный код выше, чтобы напечатать простой штрих-код.Вот как вы реализуете это в PHP и отправляете его на принтер:

 $variable = "ABC123"; //the variable you want to convert to barcode and print
    $print_data = ^XA^BY5,2,270^FO100,550^BC^FD$variable^FS^XZ; //this is the ZPL Code
     
    // Open a telnet connection to the printer, then push all the data into it.
    try
    {
        $fp=pfsockopen("10.64.57.51",9100); //IP of your printer and port
        fputs($fp,$print_data);
    echo "Job sent";
        fclose($fp);
    }
    catch (Exception $e)
    {
    echo "Job Failed";}

Примечание: предоставленный мною код ZPL создан для размера моих этикеток.Возможно, вам придется изменить некоторые числа X и Y, чтобы они соответствовали вашим.Вы можете проверить это на предоставленном мною Веб-сайте.

0 голосов
/ 28 января 2019

Поиск в Google по запросу "render html to image" дает несколько результатов, например, здесь .Глядя на файл readme, кажется довольно простым преобразовать ваш html в изображение / pdf примерно так (при условии, что вы его установили)

use Spatie\Browsershot\Browsershot;    

Browsershot::html($someHtml)->savePdf('example.pdf');

Я не знаком с использованием сокетов и печати, но вам следуетиметь возможность просто читать содержимое файла, например,

file_get_contents('file.pdf')

и делать то, что вы делали раньше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...