2012-07-17 3 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

+0

동일한 문제가 발생하여 DocFlavor.INPUT_STREAM.AUTOSENSE가 도움이되지 않습니다. –

답변

1

Mac에서만 문제가 발생합니다. 내 제안은 Java 2 Print API + Java 인쇄 서비스를 사용합니다.

Java 2 Print 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); 

.

관련 문제