打印适用于Linux但不适用于Windows

时间:2016-04-25 07:17:41

标签: java windows tomcat printing

我正在开发一个打印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();

0 个答案:

没有答案