Я был весь стек, глядя на то, что требуется для этого, и немного запутался.
Позволяет получить одну вещь прямо, это локальная сеть внутри сети, и я понимаю, что PHP является серверной.
Я управляю решением управления компанией на веб-сайте PHP, JAVA, JQuery Idea. и мы хотели бы печатать отчеты непосредственно с сервера и квитанций «LINUX» и т. д.
Я установил чашки на сервере, и сервер печатает хорошо, и теперь я просто зациклен на том, действительно ли возможно заставить сервер печатать наши pdf-файлы, которые мы генерируем непосредственно из кода PHP.
Я был бы счастлив, даже если бы у нас был скрипт bash для запуска и проверки каталога, распечатайте pdf-файл, а затем удалите его, хотя я пока буду рассматривать его как работу.
Как я уже сказал, я понимаю, что если бы это было сделано на WWW, тогда были бы определенные подвиги, которые можно было бы использовать. Если бы я запускал эту систему на www, у меня был бы совершенно другой сайт, который не разрешил печать, и эта функция не понадобилась.
Заранее спасибо
Alex
Если CUPS настроен правильно, печать PDF из оболочки буквально так же просто, как и
lpr myfile.pdf
Итак, как только вы написали свой PDF-файл во временный файл, вы можете использовать любую из доступных функций PHP для выполнения этой команды оболочки: exec()
, shell_exec()
, system()
Вы даже можете сделать это, не записывая временный файл и напрямую передавая данные в lpr
через STDIN (попробуйте cat myfile.pdf | lpr
в качестве примера в оболочке).
Вы можете передавать данные в STDIN программы на PHP, если вы запускаете ее с помощью proc_open()
. Первый пример из руководства PHP можно адаптировать к чему-то вроде этого:
<?php $descriptorspec = array( 0 => array("pipe", "r"), // stdin is a pipe that the child will read from ); $process = proc_open('lpr', $descriptorspec, $pipes); if (is_resource($process)) { // $pipes now looks like this: // 0 => writeable handle connected to child stdin // 1 => readable handle connected to child stdout // Any error output will be appended to /tmp/error-output.txt fwrite($pipes[0], $pdf_data); fclose($pipes[0]); } ?>
Использовать PHP :: PRINT :: IPP
Это самый безопасный и простой способ печати из Интернета с помощью PHP. Здесь вам не нужно включать эксплуатационные функции php, такие как exec()
, shell_exec()
и т. Д.
Основное использование
<?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(); ?>
Справка
Разумное использование php's shell_exec()
должно позволить вам печатать PDF-файлы синхронно сразу после их создания, тем самым избегая необходимости в bash.
Я не использовал shell_exec()
для печати, поэтому не могу помочь с деталями, но по существу, если вы можете успешно составить команду печати UNIX, вы можете написать инструкцию shell_exec()
.