2012-06-23 2 views
4

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

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

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

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

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

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

Спасибо заранее

Alex

ответ

2

Если CUPS настроен должным образом, печать PDF из оболочки буквально так же легко, как

lpr myfile.pdf 

Итак, как только вы написали свой PDF временный файл, вы можете использовать любой из доступных функций PHP выполнить эту команду оболочки: exec(), shell_exec(), system()

Вы можете даже сделать это без написания временного файла и кормить данные непосредственно lpr через STDIN (попробуйте cat myfile.pdf | lpr в качестве примера на корпусе).

Вы можете передавать данные в STDIN программы на PHP, если вы запустите его, используя proc_open(). Первый пример из PHP Manual может быть адаптирована к чему-то вроде этого:

<?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]); 
} 
?> 
0

Разумного использование РНР shell_exec() позволит вам печатать PDF-файлы синхронно, сразу же после их создания, что позволяет избежать необходимости Баша.

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

+1

Это 'shell_exec()', на самом деле – pixelistik

+0

опечатка - спасибо - исправлено. –

+0

Спасибо за быстрый ответ, я посмотрю в shell_exec() Если кто-то может добавить к этому способу делать это, было бы очень полезно – ZeroG

1

Использование 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();               
?> 

Reference

+0

эта библиотека тоже очень полезна -> https://github.com/mike42/escpos- php – wnasich

+0

Но вы можете печатать только txt с PrintIPP, а парень спрашивает о файлах PDF. –

Смежные вопросы