Intereting Posts
как отключить cookie в PHP? вызов функции php с использованием ajax после интервала времени Как использовать переменную $ result с объектом таблицы в SQL-запросе с использованием mySQLi Кодировать / сжимать последовательность повторяющихся целых чисел Расширение класса Statement PDO Можно ли использовать встроенные комментарии для файлов .ini с PHP? iconv UTF-8 // IGNORE все еще производит ошибку «незаконный символ» Каковы наилучшие методы шифрования паролей, хранящихся в MySql, с использованием PhP? Алгоритм создания большого файла фиктивных файлов Замешательство в Angular 2 Http Post Request Какая сортировка MySQL точно соответствует сопоставлению строк PHP? Ошибка компиляции: «g ++: ошибка при попытке выполнить« cc1plus »: execvp: нет такого файла или каталога" PHP MongoDB Исключить _id из результатов Кодирование обнаружения php Ошибка Mysql & PHP: количество столбцов не соответствует количеству значений в строке 1

Печать на принтер Zebra в 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. Если, однако, ваши принтеры и сервер веб-приложений находятся в разных сетях, вы не сможете печатать поверх сокетов на этом модельном принтере без дополнительных плагинов или надстроек для браузера. Вообще говоря, доступ к удаленному принтеру (или любому устройству) через веб-сайт является угрозой безопасности.

    Я понимаю, что этот вопрос немного стар, но мне недавно пришлось выполнить эту точную задачу, и вот как я это сделал. Основной сервер – это сервер 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.

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

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

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

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

     exec("lpr -P 'printer' -r 'filename.txt'); 

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

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

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

    После установки принтера на требуемый IP-адрес: введите описание изображения здесь

     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