发送数据到Java打印机

问题描述:

下面的代码发送数据到打印机,但是,当它到达打印机队列它回来了一个Unable to convert PostScript file.我认为这将通过指定的风味来克服,但情况并非如此发送数据到Java打印机

import javax.print.Doc; 
import javax.print.DocFlavor; 
import javax.print.DocPrintJob; 
import javax.print.PrintException; 
import javax.print.PrintService; 
import javax.print.PrintServiceLookup; 
import javax.print.SimpleDoc; 
import javax.print.attribute.PrintServiceAttribute; 
import javax.print.attribute.standard.PrinterName; 

public class New1 { 

    public static void main(String[] args) { 

     try { 

      String s = "Hello"; 

      // byte[] by = s.getBytes(); 
      DocFlavor flavor = DocFlavor.STRING.TEXT_PLAIN; 
      PrintService pservice = PrintServiceLookup.lookupDefaultPrintService(); 
      DocPrintJob job = pservice.createPrintJob(); 
      Doc doc = new SimpleDoc(s, flavor, null); 
      job.print(doc, null); 

     } catch (PrintException e) { 
      e.printStackTrace(); 
     }  
    } 
} 
+0

您是否尝试过使用'DocFlavor.INPUT_STREAM.AUTOSENSE'和'StringInputStream'来代替? – Robert 2012-07-17 13:43:28

+0

我遇到同样的问题,DocFlavor.INPUT_STREAM.AUTOSENSE没有帮​​助。 – 2013-05-16 14:51:15

仅使用JPS,您将遇到Mac问题。 我的建议是使用Java 2 Print API + Java Print Service。

Java 2打印API是1990年风格的东西。为避免使用Java 2 Print API创建代码,可以使用PDFBox http://pdfbox.apache.org作为框架。

随着PDFBox的,你可以创建一个PDF文件(http://pdfbox.apache.org/1.8/cookbook/documentcreation.html),但不是保存,使用代码打印:

PrinterJob printJob = PrinterJob.getPrinterJob(); 
PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 
printJob.setPrintService(service);  
document.silentPrint(printJob); 

它在我的Mac上工作正常。