4

私はこれを行うために何が必要かを調べて、少し混乱してしまいました。

これはローカルベースのイントラネットであり、PHPがサーバー側であることを理解しています。

私はWebベースのPHP、JAVA、JqueryIdeaで会社の管理ソリューションを実行しています。「LINUX」サーバーや領収書などから直接レポートを印刷したいと思います。

サーバーにカップをインストールしましたが、サーバーは正常に印刷されていますが、PHPコードから直接生成しているPDFファイルをサーバーに印刷させることが実際に可能かどうかに固執しています。

実行してディレクトリをチェックするbashスクリプトがあり、pdfを印刷してから削除しても、当面は回避策と見なすことができれば幸いです。

私が言ったように、これがWWWで行われた場合、使用できる特定のエクスプロイトがあることを理解しています。このシステムをwwwで実行すると、印刷が許可されていないまったく別のサイトになり、この機能は必要なくなります。

前もって感謝します

アレックス

4

3 に答える 3

2

CUPSが適切に構成されている場合、シェルからのPDFの印刷は文字通り簡単です。

lpr myfile.pdf

したがって、PDFを一時ファイルに書き込んだら、使用可能なPHP関数のいずれかを使用して、そのシェルコマンドを実行できます。exec()、、shell_exec()system()

lpr一時ファイルを書き込まずにそれを実行し、STDINを介してデータを直接フィードすることもできます(cat myfile.pdf | lprシェルでの例として試してください)。

を使用して実行すると、PHPでプログラムのSTDINにデータをフィードできますproc_open()PHPマニュアルの最初の例は、次のようなものに適合させることができます。

<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
);

$process = proc_open('lpr', $descriptorspec, $pipes);

if (is_resource($process)) {
    // $pipes now looks like this:
    // 0 => writeable handle connected to child stdin
    // 1 => readable handle connected to child stdout
    // Any error output will be appended to /tmp/error-output.txt

    fwrite($pipes[0], $pdf_data);
    fclose($pipes[0]);
}
?>
于 2012-06-23T10:39:54.223 に答える
1

PHP :: PRINT::IPPを使用する

これは、PHPを使用してWebから印刷するための最も安全で簡単な方法です。exec()ここでは、shell_exec()などの悪用可能なphp関数を有効にする必要はありません。

基本的な使用法

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

参照

于 2015-03-02T13:28:33.263 に答える
0

phpを適切に使用するとshell_exec()、PDFを作成した直後に同期して印刷できるため、bashが不要になります。

私はshell_exec()印刷に使用したことがないので、詳細については説明できませんが、基本的に、UNIXの印刷コマンドを正常に作成できれば、shell_exec()命令を記述できます。

于 2012-06-23T10:05:17.430 に答える