2012-07-17 142 views
2

下面的代碼發送數據到打印機,但是,當它到達打印機隊列它回來了一個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

回答

1

僅使用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上工作正常。