从PHP应用程序通过网络打印

时间:2011-04-17 14:43:46

标签: php linux printing cups network-printers

我有一组打印机通过网络连接,并为每台打印机分配静态IP。

现在我在Linux服务器上运行一个需要通过网络向这些打印机发送打印作业的PHP Web应用程序。

这是否可以使用lpr或杯子,我该怎么做呢。

4 个答案:

答案 0 :(得分:10)

您可以从此处使用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.
?>

答案 1 :(得分:5)

之前已经问过这个问题。见print to a network printer using 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 :(得分:2)

尝试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();                                                          
?>

Reference

答案 3 :(得分:-1)

我也正在研究这个......我认为下面编写的代码可以帮助你处理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...";
?>