无法使用Java打印机打印文档服务(JPS)
问题描述:
我已经实现了一个程序,使用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)
能否请你帮我出这一点。
答
Java Print Services允许您“绘制”Swing等页面,然后将结果发送到打印机。它不具有Word格式或HTML页面或类似知识。
因此,您需要一个知道如何将doc文件的内容绘制到打印机的模块来执行此操作。我个人没有这方面的经验。
答
感谢您的回复
我想你是在谈论AWT打印。这与Java Print Service不同。你可以有已预格式化,利用各种使用Java打印服务(JPS)选择打印文本数据
http://docs.oracle.com/javase/1.5.0/docs/guide/jps/spec/docflavor.fm1.html#998469
的问题出现在当文件使用UTF-8编码,并试图把它打印出来使用JPS如果它是一个正常的ASCII文件,则为 。它得到正确打印
它可能无法解决您的问题,但你不应该无视你的'PrintException'。 –