Печать на принтер Zebra в php

php
Вопрос: Поиск подходящего кода для печати с веб-страницы php на IP-принтер zebra с использованием порта RAW 9100. Кто-нибудь знает, возможно ли это? Мне нужно отправить строку в формате ZPL с форматированием непосредственно на принтер этикеток ZM400. Я искал высоко и низко, ближе всего я нашел это: печать непосредственно на сетевой принтер с использованием php Это

Вопрос:

Поиск подходящего кода для печати с веб-страницы php на IP-принтер zebra с использованием порта RAW 9100. Кто-нибудь знает, возможно ли это? Мне нужно отправить строку в формате ZPL с форматированием непосредственно на принтер этикеток ZM400. Я искал высоко и низко, ближе всего я нашел это: печать непосредственно на сетевой принтер с использованием php

Это кажется очень близким к тому, что мне нужно, но когда моя страница php попадает в этот код, он ничего не делает. Здесь код, который я использовал:

<?php $handle = printer_open(‘\192.168.2.206:9100’); printer_set_option($handle, PRINTER_MODE, «RAW»); printer_write($handle, «TEXT To print»); printer_close($handle); ?> Лучший ответ:

Если вы хотите отправить ZPL на принтер, вам не обязательно нужна специальная библиотека печати. Вам просто нужно открыть сокет для этого принтера и отправить свой ZPL напрямую. Это скорее общий вопрос сокета для сокетов PHP, чем вопрос, связанный с принтером.

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

Ответ №1

Я понимаю, что этот вопрос немного стар, но мне недавно пришлось выполнить эту точную задачу, и вот как я это сделал. Основной сервер – это сервер PHP на основе облака, который не находится в локальной сети. В локальной сети есть еще одна машина, которая просто запускает WAMP и этот скрипт, сам принтер Zebra также находится в локальной сети по IP 192.168.1.201:

<?php /* * File Allows printing from web interface, simply connects to the Zebra Printer and then pumps data * into it which gets printed out. */ $print_data = $_POST[‘zpl_data’]; // Open a telnet connection to the printer, then push all the data into it. try { $fp=pfsockopen(«192.168.1.201»,9100); fputs($fp,$print_data); fclose($fp); echo ‘Successfully Printed’; } catch (Exception $e) { echo ‘Caught exception: ‘, $e->getMessage(), «n»; }

Затем на веб-странице, созданной облачным сервером, есть код, который просто выполняет AJAX POST на сервере в локальной сети, размещая в zpl_data для печати.

Изменить 2017

Теперь мы перешли к PrintNode (https://www.printnode.com/). Мы обнаружили, что это действительно хорошо до сих пор, и позволяет нам печатать все виды документов без необходимости использовать наши собственные прокси, а также предоставлять установщик с whitelabelled, чтобы он выглядел как наш собственный продукт. Я не связан с PrintNode.

Ответ №2

Функции printer_open() и связанные с ними функции не являются частью стандартного языка PHP; они являются частью расширения.

Если вы хотите их использовать, вам необходимо установить расширение: см. Здесь информацию о расширении принтера.

Однако учтите, что это расширение доступно только для PHP, работающего в Windows.

Если ваш сервер не является Windows, вам нужно будет использовать внешнюю программу для отправки данных на принтер. Пример может выглядеть так:

exec(«lpr -P ‘printer’ -r ‘filename.txt’);

Эта информация и многое другое можно найти в другом месте на SO – например, здесь: печать по сети из приложения PHP

Надеюсь, это поможет.

Ответ №3

После нескольких часов поиска я получаю решения:

После установки принтера на требуемый IP: enter image description here

exec(‘lp -d printer file’);

В моем случае команда была:

exec(‘lp -d Epson-Cofetarie /home/clara/Desktop/txt.txt’);

Где: принтер= Epson-Cofetarie

file =/home/clara/Desktop/txt.txt

нужен файл Apsolute path

Ответ №4

Надеюсь, этот простой код решит проблему,

  1. Поместите свой код ZPL в файл, например, “barcode.zpl”
  2. Поделитесь своим принтером Zebra, чтобы к нему можно было получить доступ в проводнике Windows, набрав
    например, 192.168.1.113 [ИМЯ ПРИНТЕРА];
  3. Создайте PHP файл и напишите код:

<?php $file=»barcode.zpl»; copy($file, «//192.168.1.113/ZDesigner GK420t»);?>

Благодарю вас

Оцените статью
Добавить комментарий