Печать на стороне сервера на сервере Ubuntu Server

Я был весь стек, глядя на то, что требуется для этого, и немного запутался.

Позволяет получить одну вещь прямо, это локальная сеть внутри сети, и я понимаю, что 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() .