У меня есть набор принтеров, подключенных по сети со статическим IP, назначенным каждому принтеру.
Теперь у меня есть веб-приложение PHP, работающее на сервере Linux, которому необходимо отправить задания на печать, на этот принтер по сети.
Возможно ли это использовать lpr или чашки и как я могу это сделать.
Вы можете использовать класс принтера LPR здесь:
http://www.phpclasses.org/package/2540-PHP-Abstraction-for-printing-documents.html
Пример:
<?php include("PrintSend.php"); include("PrintSendLPR.php"); $lpr = new PrintSendLPR(); $lpr->setHost("10.0.0.17"); //Put your printer IP here $lpr->setData("C:\\wampp2\\htdocs\\print\\test.txt"); //Path to file, OR string to print. $lpr->printJob("someQueue"); //If your printer has a built-in printserver, it might just accept anything as a queue name. ?>
Этот вопрос задавали раньше. См. Печать на сетевом принтере с помощью PHP
Ответ был дан, что время было exec("lpr -P 'printer' -r 'filename.txt');
Однако ответ так и не был принят, поэтому не было уверенности в том, что ОП нашел его полезным; это, конечно, похоже, что это должно сделать трюк, но это не совсем прямой и простой способ сделать это изнутри PHP.
Ряд других ресурсов, которые я нашел, также рекомендуют варианты этого подхода.
Копая немного глубже, я вижу, что PHP имеет модуль принтера в PECL. Однако это только для Windows, и похоже, что он не поддерживается. Но в случае, если это помогает, ссылку здесь: http://www.php.net/manual/en/intro.printer.php
Я думаю, что в конечном итоге ответ заключается в том, что PHP на самом деле не предназначен для такого рода вещей и не имеет встроенных функций для этого. Но так как вы можете использовать внешние команды, используя exec()
и аналогичные, не должно быть слишком сложно заставить его работать, хотя и не совсем идеально.
Попробуйте PHP :: PRINT :: IPP
Он отлично работал для меня.
Основное использование
<?php require_once(PrintIPP.php); $ipp = new PrintIPP(); $ipp->setHost("localhost"); $ipp->setPrinterURI("/printers/epson"); $ipp->setData("./testfiles/test-utf8.txt"); // Path to file. $ipp->printJob(); ?>
Справка
Я также занимался исследованиями этого … и я думаю, что приведенный ниже код может помочь вам в работе с принтером в Linux
<?php $printer = "\\\\Pserver.php.net\\printername"); if($ph = printer_open($printer)) { // Get file contents $fh = fopen("filename.ext", "rb"); $content = fread($fh, filesize("filename.ext")); fclose($fh); // Set print mode to RAW and send PDF to printer printer_set_option($ph, PRINTER_MODE, "RAW"); printer_write($ph, $content); printer_close($ph); } else "Couldn't connect..."; ?>