Вопрос по php, intranet, printing, lamp, cups – Серверная печать PHP Сервер Ubuntu

4

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

Давайте поймем одну вещь: это локальная внутренняя сеть, и я понимаю, что PHP на стороне сервера.

Я использую решение для управления компанией на основе PHP, JAVA и Jquery Idea. и мы хотели бы печатать отчеты непосредственно из «LINUX». сервер и квитанции и т. д.

Я установил чашки на сервер, и сервер печатает нормально, и теперь я просто застрял на том, возможно ли заставить сервер печатать наши PDF-файлы, которые мы генерируем непосредственно из кода PHP.

Я был бы счастлив, даже если бы у нас был скрипт bash для запуска и проверки каталога, распечатать PDF-файл и затем удалить его, хотя я бы пока видел это как обходной путь.

Как я уже сказал, я понимаю, что если бы это было сделано на WWW, то были бы определенные эксплойты, которые можно было бы использовать. Если бы я запустил эту систему на www, у меня был бы совершенно другой сайт, на котором нельзя было бы печатать, и эта функция не потребовалась бы.

Заранее спасибо

Alex

Ваш Ответ

3   ответа
1

использованиеPHP :: ПЕЧАТЬ :: 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();                                                          
?>

Ссылка

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededgithub.com/mike42/escpos-php
0

Разумное использование phpshell_exec() должен позволять печатать PDF-файлы синхронно, сразу после их создания, что исключает необходимость в bash.

Я не использовалshell_exec() для печати, так что не можете помочь с деталями, но по существу, если вы можете успешно составить команду печати UNIX, то вы можете написатьshell_exec() инструкция.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded ZeroG
Error: User Rate Limit Exceededshell_exec()Error: User Rate Limit Exceeded
2

Если 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]);
}
?>

Похожие вопросы