各プリンターに静的IPが割り当てられたネットワークを介して接続するプリンターのセットがあります。
これで、ネットワーク経由でこれらのプリンターに印刷ジョブを送信する必要があるLinuxサーバー上で実行されているPHPWebアプリケーションがあります。
これはlprまたはカップを使用して可能ですか?どうすればそれを実行できますか?
各プリンターに静的IPが割り当てられたネットワークを介して接続するプリンターのセットがあります。
これで、ネットワーク経由でこれらのプリンターに印刷ジョブを送信する必要があるLinuxサーバー上で実行されているPHPWebアプリケーションがあります。
これはlprまたはカップを使用して可能ですか?どうすればそれを実行できますか?
ここからLPRプリンタクラスを使用できます。
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');
しかし、答えは決して受け入れられなかったので、OPがそれが役に立ったかどうかはわかりません。確かにそのトリックを実行する必要があるように見えますが、PHP内から実行するための直接的で簡単な方法ではありません。
私が見つけた他の多くのリソースも、このアプローチのバリエーションを推奨していました。
もう少し掘り下げてみると、PHPにはPECLにPrinterモジュールがあることがわかります。ただし、これは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...";
?>