2011-08-29 283 views
2

我已經實現了一個程序,使用IP地址,打印機名稱將文檔打印到特定的打印機,並且運行良好,沒有任何錯誤和異常。正在從java發送打印機作業,我可以在本地打印機打印池中看到此信息,但該頁面未在打印機上打印。無法使用Java打印機打印文檔服務(JPS)

URI myURI=null; 
FileInputStream psStream=null; 
try { 
    psStream = new FileInputStream("sample.doc"); 
} 
catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} 
DocFlavor psInFormat = DocFlavor.BYTE_ARRAY.GIF; 
Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet(); 
PrintService[] services = PrintServiceLookup.lookupPrintServices(psInFormat, aset); 
if (services.length > 0) { 
    DocPrintJob job = services[0].createPrintJob();   
    try { 
     job.print(myDoc, aset); 
    } 
    catch (PrintException e){ 
    } 
} 

你能幫我解決嗎?

感謝, SRIKANTH Chilukuri


我發現這個問題。

psStream = new FileInputStream("sample.doc");  

上述語句創建問題。因爲它是MS Word應用程序,所以無法使用文件輸入流來讀取文件。

我正在使用POI jar並閱讀文檔。

POIFSFileSystem psStream = new POIFSFileSystem(new FileInputStream(filesname)); 
Doc myDoc = new SimpleDoc(psStream, psInFormat, null); 

但文件API不supporing得到拋出:IllegalArgumentException

Exception in thread "Main Thread" java.lang.IllegalArgumentException: data is not of declared type 
    at javax.print.SimpleDoc.<init>(SimpleDoc.java:82) 
    at com.src.print.TestPrint2.main(TestPrint2.java:67) 

能否請你幫我出這一點。

+1

它可能無法解決您的問題,但你不應該無視你的'PrintException'。 –

回答

0

Java Print Services允許您「繪製」Swing等頁面,然後將結果發送到打印機。它不具有Word格式或HTML頁面或類似知識。

因此,您需要一個知道如何將doc文件的內容繪製到打印機的模塊來執行此操作。我個人沒有這方面的經驗。