我正在开发一个打印pdf文件的Web应用程序(来自ByteArrayOutputStream)。
这是代码:
PrintService service = null;
for (String printer : listPrinters){
for( PrintService printService : printServices ) {
Attribute[] attrs = printService.getAttributes().toArray();
for (int j=0; j<attrs.length; j++) {
String attrName = attrs[j].getName();
String attrValue = attrs[j].toString();
if (attrName.equals("printer-name")){
if (attrValue.equals(printer)){
service = printService;
}
}
}
}
}
try {
InputStream fi = new ByteArrayInputStream(baos.toByteArray());
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
DocPrintJob printJob = service.createPrintJob();
Doc doc = new SimpleDoc(fi, flavor, null);
printJob.print(doc, null);
}
catch (Exception e1) {
log.debug(e1.getMessage());
}
如果我在Linux服务器上的Tomcat 7中部署WAR,则该文档可以很好地打印在打印机上
如果我在Windows上的Tomcat 7中部署WAR,我可以在打印机的作业队列中看到该文档,然后它就像打印完成一样消失,但打印机没有任何内容。
我不明白为什么。我在两个系统上都使用JRE 1.8.0_74
我正在Linux下开发
如果有人可以帮我这个......
谢谢。
[UPDATE]
打印简单的txt文件时出现相同的错误:
FileInputStream fis = new FileInputStream("C:/mytxt.txt");
Doc pdfDoc = new SimpleDoc(fis, DocFlavor.INPUT_STREAM.AUTOSENSE, null);
DocPrintJob printJob = service.createPrintJob();
printJob.print(pdfDoc, new HashPrintRequestAttributeSet());
fis.close();