Печать по сети из приложения PHP
У меня есть набор принтеров, подключенных по сети со статическим IP, назначенным каждому принтеру.
Теперь у меня есть веб-приложение PHP, работающее на сервере Linux, которому нужно отправлять задания печати на эти принтеры по сети.
Возможно ли это с помощью lpr или чашки и как мне это сделать.
4 ответа
Вы можете использовать класс LPR Printer здесь:
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...";
?>