我已经实施了一个程序,使用IP地址,打印机名称将文档打印到特定的打印机,并且运行正常,没有任何错误和异常。正在从java发送打印机作业,我可以在本地打印机打印池上看到这个,但页面不在打印机上打印。
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 );
但Doc API并不支持获得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)
你可以帮我解决这个问题。
答案 0 :(得分:0)
Java Print Services允许您“绘制”像Swing这样的页面,然后将结果发送到打印机。它不了解Word格式或HTML页面或类似信息。
因此,您需要一个知道如何将doc文件的内容绘制到打印机的模块来执行此操作。我个人没有这种模块的经验。
答案 1 :(得分:0)
感谢您的回复
我猜你在谈论AWT打印。这与Java Print Service不同。您可以使用Java Print Service(JPS)
使用各种选项打印预格式化的文本数据http://docs.oracle.com/javase/1.5.0/docs/guide/jps/spec/docflavor.fm1.html#998469
当使用UTF-8编码文件并尝试使用JPS打印时会出现问题 如果是普通的ASCII文件。它被正确打印