6

Node JS でIPP (およびCUPS ) を使用して、子供のチェックイン システムからラベル (DYMO Labelwriter 450 Turbo's) を印刷しています。qty子供がいる部屋 (1-3) に応じて、各ラベルの異なる数量 (var ) を印刷する必要があります。現在、ラベルごとに新しい IPP 印刷ジョブを作成していますが、印刷の間に数秒の遅延があります。

遅延をなくすために、ジョブごとに数量を IPP に渡す方法はありますか? それとも、複数の同じ .pdf を 1 つのジョブに渡すのでしょうか?

Vars pdf(生成されたラベル - .pdf テンプレートを使用)、qty(印刷する必要があるラベルの数量)、およびpid(印刷するプリンターのプリンター ID) は、次のコード ビットに渡されます。

function print(qty, pid, first, last, gender, room, notes, notesr, timestamp, age, grade, code) {

    fs.readFile('label.pdf', 'utf-8', function (err, pdf) {

        pdf = pdf.toString();
        pdf = pdf.replace('<FIRST>', first).replace('<LAST>', last).replace('<GENDER>', gender).replace('<ROOM>', room).replace('<NOTES>', notes).replace('<NOTESON>', notesr).replace('<TIMESTAMP>', timestamp).replace('<AGE>', age).replace('<GRADE>', grade).replace('<CODE>', code);

        if (err)
            throw err;

        var printer = ipp.Printer('http://127.0.0.1:631/printers/DYMO_'+pid);
        var file = {
            'operation-attributes-tag':{
                'requesting-user-name': 'Test User',
                'job-name': 'My Test Job',
                'document-format': 'application/pdf'
            },
            data: new Buffer(pdf, 'binary')
        };

        for (var i = 0; i < qty; i++) {
            printer.execute('Print-Job', file, function (err, res) {
                console.log('Printed: '+res.statusCode)
            })
        }
    });
}

アップデート:

私の問題は、次のジョブの処理を開始する前に、プリンターが「アイドル」に戻るのをCUPSが待機しているため、ジョブ間の遅延が発生しているようです。待機をバイパスするには、オプションwaitprinter=falseDeviceURI に追加する必要があります。

私はそれを DeviceURI に追加しようとしましたが、役に立ち/etc/cups/printers.confませんでした。Printer次のようにオブジェクトのURLに追加しようとしました:

var printer = ipp.Printer('http://127.0.0.1:631/printers/DYMO_'+pid+'?waitprinter=false');

プリンターが見つからないエラー。このオプションを IPP で使用するにはどうすればよいですか?

更新 #2:

緊急に、pdfkitを使用して複数ページのラベル PDF をオンザフライで生成し、家族のすべてのラベルを 1 つの印刷ジョブとして送信する回避策を作成しました。

4

1 に答える 1

1

/etc/cups/printers.confCUPS ホストの DeviceURI に追加しようとしましたか?

CUPS の実行中にそのファイルを単に編集しただけでは、機能しません。通常printers.confは直接編集するためのものではありません。最初の行でこれを述べています(「# CUPSD が実行中の場合はこのファイルを編集しないでください」と叫んでいます)。

1.

プリンター構成を永続的lpadminに変更するための推奨される方法は、CUPS サーバーで次のコマンドを使用することです。

lpadmin -h cupsserver -P printername -E -v ipp://11.2.13.14:631/waitprinter=false

次に、CUPS サーバーは、CUPS クライアントに、このプリンターに次の方法でアクセスできることを伝えます。

http://cupsserver:631/printername

(本当に printers.conf を直接編集する必要がある場合は、最初に CUPS デーモンを停止し、編集を行ってから cupsd を再起動する必要があります。)

2.

プリンターの構成を一時的lpに変更するには (次のジョブのみ)、ジョブの送信時にコマンドでオプションを渡すことができます。

lp -d printername -o waitprinter=false myjob.pdf

問題空間に翻訳すると、この解決策は次のことを意味します。

  1. var printer = ipp.Printer ...ステートメント内のプリンター名を変更しようとしないでください。

  2. 代わりに、 operation-attributes-tag を変更して、'waitprinter': 'false'そこにステートメントを追加してください。

于 2013-11-17T21:45:18.197 に答える