印刷の特定のプリンタ(IPP URI)Java
-
11-09-2019 - |
質問
必要があります。Javaの印刷に特定のIPPプリンター?すべてのサンプルコードおよびチュートリアルがその場で発音を確認することがどのように印刷、特定のドキュメントの種類は、以下のようなもの:
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
DocPrintJob pj = pservices[0].createPrintJob();
try {
FileInputStream fis = new FileInputStream("test.ps");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, aset);
} catch (FileNotFoundException fe) {
} catch (PrintException e) {
}
}
このスニペットを作る最初のプリンタを見ることが可能な印刷します。私の場合、たいルックアッププリンタにより、そのURIが PrintServiceLookup
な支援です。かしてみました PrintServiceAttributeSet
, ではなく、 PrintRequestAttributeSet
, が付加されている PrinterURI
属性などの返還ー/デリがあります。このルックアップサービスでプリンタを変えることのできる先をURIではなく、プリンタがURIです。
としての最後のリゾートでは、と思いがけた列挙を通じてすべての PrintService
s返される lookupPrintServices
, がURIでない他の属性です。プリンタの名前はありますがさんありがとうございます。URIです。
を対象としたバックグラウンドで、私のwebappのニーズへの印刷、バーコードを特定のプリンタに基づき、現在のユーザーです。各ユーザーはプリンタのURIのポイントプリンタ、カップサーバーです。プリンタのURIの情報と、やまだひさしをはじめとする制約は、プリンタを合わせた名前のURIまたは部分文字列をURIです。
編集: を明確化するためのビット思い描画のためのデータだけをコピーしblob与えられたプリントします。のんの姿を識別する方法プリンターによるIPP URIです。
解決
そう、このよ jipsi
:
URI printerURI = new URI("ipp://SERVER:631/printers/PRINTER_NAME");
IppPrintService svc = new IppPrintService(printerURI);
InputStream stream = new BufferedInputStream(new FileInputStream("image.epl"));
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
Doc myDoc = new SimpleDoc(stream, flavor, null);
DocPrintJob job = svc.createPrintJob();
job.print(myDoc, null);
みんなに見て欲しい、私は残念でに3-サードパーティ製ライブラリなので一見単純な印刷特定のプリントします。
更新
DRポイントの コメント そのjipsi新 ホーム, 新しい名前です。
Cups4J 素敵な代替が、その名の示すとおり正しく動作しないことがありの場合、相手先がないカップサーバーです。私た結果をCups4J印刷、シマウマの熱プリントします。
他のヒント
私はあなたがプリンタにあなたがしたいの道を得ることができるとは思わない(私は、Java印刷機構は、IPPを以前から考えて)ます。
あなたは、しかし、私が思い出す正しくローカルに印刷ジョブをレンダリングしてから、「手で」ターゲットCUPSサーバに出力ストリームのバイトを出荷することができるかもしれません。これはあなたのために、「十分」でしょうか?