2012-02-01 34 views
0

ネットワークプリンタでファイルを印刷するサンプルアプリケーションを開発中です。しかし、私は成功することができません。みんなこの問題を取り除くために私を助けてください。 ネットワークプリンタで印刷するJavaアプリケーション

FileInputStream fis = new FileInputStream(file); 
if (fis == null) { 
System.out.print("No File"); 
return; 
} 
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 

PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 

aset.add(new PrinterName("ipp:\\witnw21va\ipp\ITDepartment-HP4050", null)); 
//PrintServiceAttributeSet aset = HashPrintAttributeSet(); 
PrintService[] pservices = PrintServiceLookup.lookupPrintServices(flavor, aset); 

if (service != null){ 
System.out.println("Default Printer: " + service.getName()); 

// Creating DocPrintJob 
DocPrintJob job = service.createPrintJob(); 
try{ 
Doc doc = new SimpleDoc(fis,flavor,null); 

PrintJobWatcher pjDone = new PrintJobWatcher(job); 

job.print(doc,aset); 

// Wait for the print job to be done 
pjDone.waitForDone(); 

fis.close(); 
} 

感謝します。あなたは、プリンタ名に無効なescape sequencesを持っているので

+3

はStackOverflowのへようこそスラッシュ。そのままでは、フォーマットに失敗した方法について詳しくは書かれていませんが、フォーマットが不適切で不完全なコードが投稿されています。残念ながら、推測以外に誰も提供できるものはあまりありません。 –

+1

人はネットワーク上での印刷を探している人には便利だ –

答えて

0

このコードは、コンパイルされません。

new PrinterName("ipp:\\witnw21va\ipp\ITDepartment-HP4050", null) 

は、Javaコンパイラを使用すると、改行\nなどの特殊文字を書き込むしようとしていると考えて、そして\wに惑わされ、\iその文字列の中には、合法ではないものがあります。

あなたはそれを法的にするために、各バックスラッシュをエスケープする必要があります。

new PrinterName("ipp:\\\\witnw21va\\ipp\\ITDepartment-HP4050", null) 

か、それが実際に前方にする必要があります場合は、それを変更するには、

関連する問題