2011-08-29 288 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文件的内容绘制到打印机的模块来执行此操作。我个人没有这方面的经验。