我有一组打印机通过网络连接,并为每台打印机分配静态IP。
现在我在Linux服务器上运行一个需要通过网络向这些打印机发送打印作业的PHP Web应用程序。
这是否可以使用lpr或杯子,我该怎么做呢。
答案 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
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();
?>
答案 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...";
?>