lp filename
コマンドを使用しても問題ないファイルがあります。javax.printを使用したカップによる印刷
ファイルはレシートインパクトプリンタ用のESC/Pファイルです。それは、LinuxのネイティブCUPSドライバとそのすべてが動作します。
javax.print
APIを使用しようとしています。印刷をより細かく制御できるようにしています。Linuxはターゲットプラットフォームですが、クロスプラットフォーム対応にしておきたいと思います。
は私が男とデータ型(InputStream
、byte[]
、Reader
など)のすべてのタイプに知られているすべてのDocFlavorの組み合わせを試してみた
それだけですべて一緒にprint()
コマンドを無視するか、単にの白紙をフリップアウトのいずれか紙。 lp filename
を実行すると完璧な結果が得られます。javax.print
は、lp filename
と同等の機能を果たすにはどうすればよいですか?
私はjavax.print
を使用して設定されていません。他の「もの」を使用でき、cups4Jの調査を開始するかもしれませんが、Linux/* nixのみに制限されているようです。溶液。
私はファイル上でlp
システムコマンドを発行することができましたが、きめ細かい制御が必要です。これらは私たちが印刷している領収書ではなく、チケットで、チケットは$ 5.00から数千ドルの範囲です。現在、印刷の問題が検出された場合、取引は無効になり、印刷されたものがあれば無効となり、軽く転載しません。ああ、これを行う理由は、POSシステムをWindowsからLinuxに変更し、プリンタがシリアルポート経由でUSB経由で管理されているCUPSに直接アクセスするからです。ここで私のコードは動作しません。どんな助けもありがとうございます。
try {
// Find the default service
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
// Create the print job
DocPrintJob job = service.createPrintJob();
InputStream in = new FileInputStream("/home/bart/real.escp");
Doc docNew = new SimpleDoc(in,flavor,null);
// Monitor print job events; for the implementation of PrintJobWatcher,
// see Determining When a Print Job Has Finished
PrintJobWatcher pjDone = new PrintJobWatcher(job);
// Print it
job.print(docNew, null);
// Wait for the print job to be done
pjDone.waitForDone();
// It is now safe to close the input stream
in.close();
} catch (PrintException e) {
} catch (IOException e) {
}
印刷はせいぜいdiceyでプリンタに送信します。私は印刷の一部を行うためにlprコマンドでコマンドラインに砲撃しました。 1つの選択肢は、あなたのファイルをPDFのようなJavaが理解できる形式に変換してから、その上でjavax.printを使用できるかどうかを確認することです。 – Mitch
これは、Linuxのesc/pコンバータがあるかもしれないが、なぜlpコマンドがうまく印刷されたときに気になるのだろうか?ESC/P(プリンタに直接送ることができる)からPDFへJava Happy) - > ESC/P(ドライバ経由) ESC/Pファイルを生成しています。とにかく、Cups4Jでうまくいって、実装に約15分かかりました。私がcups4Jを使用して、他のOS /印刷システムの問題が発生したときに対処します。 –