私は、プリンタがPostscript(.ps)ファイルを印刷できるかどうかを判断しようとしています。以下の方法を使用して、私は、プリンタが次のコードでポストスクリプトを印刷できるかどうかを判断しようとしました:私はDocFlavor.INPUT_STREAM.POSTSCRIPT
かDocFlavor.BYTE_ARRAY.POSTSCRIPT
それを通過してきたし、それがWin32 Printer : HP LaserJet 2300L PS
とWin32 Printer : CutePDF Writer
を返しますPostscript印刷のサポートの決定
private void findPrinters(DocFlavor flav) {
PrintService[] services = PrintServiceLookup.lookupPrintServices(flav, null);
System.out.println(flav);
if (services != null && services.length != 0) {
System.out.println("SUPPORTED:");
for (PrintService service : services) {
System.out.println(service);
}
} else {
System.out.println("NOT SUPPORTED");
}
}
(あるどちらも"仮想"プリンタ - 前者はPDFの作成に使用され、後者はポストスクリプトの作成に使用されました。 「Windows PostScript用HPユニバーサルプリントドライバ」をインストールすると、Win32 Printer : HP Universal Printing PS
がポストスクリプト対応として表示されます。しかし、このドライバが使用されているかどうかはわかりません。そのため、他の付属プリンタがPostscriptファイルを印刷できないと解釈します。
それから私は、次のサンプルコードで接続されたプリンタのカップルにPostScriptファイルを供給しようとした:A(
FileInputStream in = null;
PrintService prnSvc = PrintServiceLookup.lookupDefaultPrintService();
DocPrintJob printJob = prnSvc.createPrintJob();
Doc doc;
in = new FileInputStream("some.ps");
if (prnSvc.isDocFlavorSupported(DocFlavor.INPUT_STREAM.POSTSCRIPT)) {
/* USE THIS FOR A PS-capable printer */
doc = new SimpleDoc(in, DocFlavor.INPUT_STREAM.POSTSCRIPT, null);
} else {
/* USE THIS FOR OTHER PRINTER */
doc = new SimpleDoc(in, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
}
printJob.print(doc, null);
それはポストスクリプト対応プリンタで正しく印刷だけでなく、ネットワークプリンタの1つでしょうHP LaserJet P4014N)は、Postscriptをサポートしていないと言っています。レシートプリンタでは、Postscriptファイルをテキストのように印刷します。ネットワークプリンタがJava(ジェネリックドライバなど)に正しく応答しないこと、実際にPostscriptをサポートできることが示唆されています。私はドキュメントを見てきましたが、LaserJet P4014NがPostscriptをサポートしているかどうかを判断できませんでした。私は別のプリンタ(HP Laserjet 2055dn)を見つけて、USB経由でコンピュータに接続しましたが、上記の方法で印刷することはできますが、PostscriptをサポートしていないとJavaは報告しています。
多分私は何か間違っていますか?そうでない場合は、プリンタがPostscriptをサポートしているかどうかを正しく検出するにはどうすればよいですか?私の究極の目標は、PostscriptをJPGに変換していない(解像度は失われていますが、ソースには画像があります)、Postscriptのサポートがあるかどうかを判断して印刷することです。 Postscript対応ではないプリンタにPostscriptファイルを印刷するための提案があれば、それを聞いてみたいです!追加情報が必要な場合はお知らせください。
使用できるサンプルPostscriptファイルhereが見つかりました。
実際の印刷を行う2番目のコードブロックは、私が手動でテストしているプリンタに手動で変更するデフォルトプリンタを使用します。最初のコードブロックは、プリンタがPostscriptをサポートしているかどうかを教えてくれるものです。 – nevets1219