Печать по сети из приложения 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...";
?>
Другие вопросы по тегам