печать по сети из приложения PHP - PullRequest
9 голосов
/ 17 апреля 2011

У меня есть набор принтеров, подключенных по сети со статическим IP-адресом, назначенным каждому принтеру.

Теперь у меня есть веб-приложение PHP, работающее на сервере Linux, которому нужно отправлять задания печати на эти принтеры черезсеть.

Возможно ли это с помощью lpr или cups и как мне это сделать.

Ответы [ 4 ]

10 голосов
/ 17 апреля 2011

Класс 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.
?>
5 голосов
/ 17 апреля 2011

Этот вопрос задавался ранее.См. печать на сетевом принтере с использованием PHP

Ответ с учетом того, что время было exec("lpr -P 'printer' -r 'filename.txt');

Однако ответ так и не был принят, поэтому не уверен, нашел ли его OPполезно;это, конечно, выглядит так, как будто это должно сработать, но это не совсем прямой и простой способ сделать это из PHP.

Ряд других ресурсов, которые я нашел, также рекомендовал варианты этого подхода.

Копая немного глубже, я вижу, что PHP имеет модуль принтера в PECL.Однако это только для Windows, и похоже, что оно не в хорошем состоянии.Но в случае, если это поможет, ссылка здесь: http://www.php.net/manual/en/intro.printer.php

Я думаю, что в конечном итоге ответ заключается в том, что PHP на самом деле не предназначен для такого рода вещей, и не имеет встроенной функциональности, чтобы сделатьЭто.Но так как вы можете выполнять оболочку для внешних команд, используя exec() и аналогичные, заставить его работать не должно быть слишком сложно, хотя и не совсем идеально.

2 голосов
/ 02 марта 2015

Попробуйте 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();                                                          
?>

Ссылка

0 голосов
/ 09 мая 2014

Я также проводил исследования по этому вопросу ... и я думаю, что приведенный ниже код может помочь вам в работе с принтером в 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...";
?>
...