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

从PHP应用程序通过网络打印,php,linux,printing,cups,network-printers,Php,Linux,Printing,Cups,Network Printers,我有一组打印机通过网络连接,每个打印机都分配了静态IP 现在我在linux服务器上运行了一个PHP web应用程序,它需要通过网络将打印作业发送到这些打印机 这是否可能使用lpr或cups,我该怎么做 这个问题以前有人问过。看 当时给出的答案是exec(“lpr-p'printer'-r'filename.txt”); 然而,这个答案从未被接受过,因此不确定OP是否有帮助;它看起来确实应该做到这一点,但它不是一个直接、简单的从PHP内部实现的方法 我发现的许多其他资源也在推荐这种方法的变体 再深

我有一组打印机通过网络连接,每个打印机都分配了静态IP

现在我在linux服务器上运行了一个PHP web应用程序,它需要通过网络将打印作业发送到这些打印机


这是否可能使用lpr或cups,我该怎么做

这个问题以前有人问过。看

当时给出的答案是
exec(“lpr-p'printer'-r'filename.txt”);

然而,这个答案从未被接受过,因此不确定OP是否有帮助;它看起来确实应该做到这一点,但它不是一个直接、简单的从PHP内部实现的方法

我发现的许多其他资源也在推荐这种方法的变体

再深入一点,我发现PHP在PECL中有一个打印机模块。但是它只适用于Windows,并且看起来没有得到很好的维护。如果有帮助,请在此处链接:


我认为最终的答案是PHP并不是为这类事情而设计的,也没有内置的功能来完成它和类似的功能,让它工作起来应该不会太难,尽管不是很理想。

您可以从这里使用LPR打印机类:

例如:

<?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.
?>

我也在做这方面的研究……我认为下面编写的代码可以帮助您在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...";
?>
试试看

它对我非常有效

基本用法

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


这可能会对您有所帮助。我会给您+1,但由于问题指定了Linux,并且您的示例代码使用了Windows目录路径,我不确定。您能确认这个类在Linux下工作吗?@spudley感谢您提供的信息将不得不用我的网络打印机进行测试。我还在看goog这看起来很有希望。@Spudley-这个类的创建者没有提到任何关于Windows的细节。所以它也必须在Linux上工作。因为我不知道或者在Linux上工作,所以我只知道这个目录路径。很公平。我给你+1;-)我现在没有时间亲自检查这个类。打印机\u打开了仅限windows的php扩展调用