0

PHPを使用してEpson TM-T88IVシリアルプリンターでQRコードを印刷しようとしています。ただし、私のphpファイルはサーバーにインストールされており、htmlファイルから正常に呼び出すことができます。私は ESCPOS-PHP ( https://github.com/mike42/escpos-php ) というライブラリを使用しており、コンピューターは Windows XP Professional を実行しています。これが私のphpスニペットです(真ん中にもっとありますが、印刷アクションには必要ありません):

<?php
require __DIR__. '/escpos-php-master/Escpos.php'; 
use Mike42\Escpos\Printer; 
use Mike42\Escpos\PrintConnectors\FilePrintConnector;

[...]

try {
    $connector = new WindowsPrintConnector("EPSON TM-T88IV Receipt");
    $printer = new Escpos($connector);
    $printer -> text("Hello World!\n");
    $printer -> cut();

    // Close printer 
    $printer -> close();
} catch(Exception $e) {
    echo "Couldn't print to this printer: " . $e -> getMessage() . "\n";
}
?>

プリンターに接続できないようです。私も試してみました

$connector = new FilePrintConnector("/dev/ttyS0");
$printer = new Printer($connector);

これは、シリアルプリンターの場合の方法です(「/ dev/ttsyS0」の代わりに何を配置すればよいかわかりません)。たぶん、サーバー経由でトリガーしようとするべきではありませんか?彼の POS システム (Maitre D) を変更することができず、請求書に QR コードを印刷する簡単な方法が必要なので、私はそれを行っています。回避策を知っている場合は、アドバイスをいただければ幸いです。ありがとう

4

1 に答える 1

2

escpos-php の作成者はこちら。

escpos -php READMEでは、最初にコマンドラインでプリンターにデータを送信するように勧めています。これにより、ドライバーを使用する前に印刷方法を決定できるからです。

たとえば、COM1 でプリンターをセットアップする場合は、次のように入力してみてください。

echo "Hello world" > COM1

対応するもの:

<?php
$connector = new FilePrintConnector("COM1");
$printer = new Escpos($connector);
$printer -> text("Hello World\n");

WindowsPrintConnector は、Windows 共有プリンターに接続するためのものです。この例には、PHP を開く前に確実に印刷できるようにするための便利なコマンドがいくつか含まれています。例えば、

echo "Hello world" > foo.txt
net use "\\computername\Receipt Printer" /user:Bob secret
copy testfile "\\computername\Receipt Printer"
del testfile

これは以下に対応します。

<?php
$connector = new WindowsPrintConnector("smb://bob:secret@computername/Receipt Printer");
$printer = new Escpos($connector);
$printer -> text("Hello World\n");

いずれにせよ、2 つの落とし穴:

  • これは、汎用/テキストのみのドライバーでのみ使用してください。escpos-php は未加工の ESC/POS を出力するため、ドキュメントを期待するドライバーを混乱させます。
  • これはサーバー側です。印刷を行うコンピューターで PHP が実行されていること、またはネットワーク印刷を使用している場合は、少なくとも内部ネットワークに接続していることを確認してください。
于 2016-09-10T08:55:52.007 に答える