プリンターが Postscript (.ps) ファイルを印刷できるかどうかを判断しようとしています。次の方法を使用して、プリンターが次のコードで 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" );
}
}
DocFlavor.INPUT_STREAM.POSTSCRIPT
orを渡すと、 DocFlavor.BYTE_ARRAY.POSTSCRIPT
and が返さWin32 Printer : HP LaserJet 2300L PS
れWin32 Printer : CutePDF Writer
ます (どちらも「仮想」プリンターです。前者は PDF の作成に使用され、後者は Postscript の作成に使用されます)。「HP Universal Print Driver for Windows PostScript」をインストールするWin32 Printer : HP Universal Printing PS
と、Postscript 対応として表示されます。ただし、このドライバーが使用されているかどうかは定かではないため、接続されている他のプリンターでは Postscript ファイルを印刷できないと解釈しています。
次に、次のサンプル コードを使用して、接続されているいくつかのプリンターに Postscript ファイルをフィードしようとしました。
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 );
Java が Postscript をサポートしていないと言うネットワーク プリンタの 1 つ (HP LaserJet P4014N) だけでなく、Postscript 対応プリンタでも正しく印刷されます。私のレシート プリンターでは、Postscript ファイルが単なるテキストであるかのように印刷されます。ネットワーク プリンタが Java (一般的なドライバなど) に正しく応答していないこと、そして実際には Postscript をサポートしていることが示唆されました。ドキュメントを見ましたが、LaserJet P4014N が Postscript をサポートしているかどうかを判断できませんでした。別のプリンター (HP Laserjet 2055dn) を見つけて、USB 経由でコンピューターに接続しましたが、Java は、上記の方法で印刷できるにもかかわらず、Postscript をサポートしていないとまだ報告しています。
多分私は何か間違ったことをしていますか?そうでない場合、プリンターが Postscript をサポートしているかどうかを正しく検出するにはどうすればよいですか? 私の最終的な目標は、プリンターが Postscript を JPG に変換しない場合 (解像度は失われるが、ソースには画像がある)、プリンターが Postscript をサポートしているかどうかを判断し、それを印刷することです。Postscript ファイルを Postscript 非対応のプリンタで印刷するための提案があれば、ぜひ聞かせてください! 追加情報が必要な場合はお知らせください。
使用できるサンプルの Postscript ファイルをいくつか見つけました。