2012-04-11 2 views
2

에 내가 우분투의 데이터를 인쇄 할 수있는 작은 응용 프로그램을 개발하고 있어요, 문제는 내 응용 프로그램을 사용하여 Windows에서 잘 작동합니다 : 우분투 그러나자바 인쇄 우분투

PrintService service = PrintServiceLookup.lookupDefaultPrintService(); 

FileInputStream fis = new FileInputStream(myfile); 

DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 
DocPrintJob job = service.createPrintJob(); 

Doc doc = new SimpleDoc(fis, flavor, null); 
job.print(doc, null); 
fis.close(); 

, 그것은 단지 나던 인쇄 할 수 있습니다. 사용중인 인쇄 API에 대한 Linux 인쇄용 특수 설정이 있습니까? 아니면 다른 것을 놓치고 있습니까?

+0

당신의 코드는 여기에 일을 내가 텍스트 파일을 가리키는 경로로 "myfile을"을 대체합니다. 시스템에 프린터를 올바르게 설치 했습니까? 다른 응용 프로그램에서 인쇄 할 수 있습니까? 예 : gedit, gvim ...? – Kent

+0

cat "filename"을 사용하여 터미널에서 인쇄 할 수 있습니다. lpr ... 일반적으로 "myfile"은 열려있는 파일 대화 상자의 경로 문자열입니다 ... – Sin5k4

+1

'eclipse'태그를 제거했습니다. 이 태그는 Eclipse, IDE에 대한 질문에 특히 유용합니다. – ArjunShankar

답변

2

나는 귀하의 프린터가 OS에 기본으로 설치되지 않았다고 생각합니다. 귀하의 "서비스"가 무엇인지 확인하십시오. 또한이 같은 인쇄 대화 상자에서 프린터를 선택할 수 있습니다

PrintRequestAttributeSet pras = 
       new HashPrintRequestAttributeSet(); 
     DocFlavor flavor = DocFlavor.INPUT_STREAM.TEXT_PLAIN_UTF_8; 
     PrintRequestAttributeSet aset = 
       new HashPrintRequestAttributeSet(); 
     aset.add(MediaSizeName.ISO_A4); 
     aset.add(new Copies(1)); 
     aset.add(Sides.ONE_SIDED); 
     aset.add(Finishings.STAPLE); 

     PrintService printService[] = 
       PrintServiceLookup.lookupPrintServices(flavor, pras); 
     PrintService defaultService = 
       PrintServiceLookup.lookupDefaultPrintService(); 
     PrintService service = ServiceUI.printDialog(null, 200, 200, 
       printService, defaultService, flavor, pras); 
     if (service != null) { 
      try { 
       FileInputStream fis = new FileInputStream("c://test.txt"); 
       DocAttributeSet das = new HashDocAttributeSet(); 
       Doc doc1 = new SimpleDoc(fis, flavor, das); 

       DocPrintJob job1 = service.createPrintJob(); 

       try { 
        job1.print(doc1, pras); 
       } catch (PrintException e) { 
        e.printStackTrace(); 
       } 
      } catch (FileNotFoundException e) { 
       e.printStackTrace(); 
      } 
     } 

일부 프린터는 텍스트되는 DocFlavor 만 이미지를 지원하지 않습니다. 또한 당신은 단순히 같은 OS 기본 방법을 사용하여 HTML 파일을 인쇄 할 수 있습니다

if (Desktop.isDesktopSupported()){ 
    Desktop desktop = Desktop.getDesktop(); 
    if (desktop.isSupported(Desktop.Action.PRINT)) 
    { 
     try { 
      File html1 = new File("c://file1.html"); 
      desktop.print(html1); 
      desktop.print(html2); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

}

+0

대화 상자를 사용해 보았습니다. 단순히 인쇄 작업을하지 못했습니다. 프린터를 보았을 때 인쇄물을 클릭해도 작업이 없습니다 ... : – Sin5k4

+0

죄송합니다. DocFlavor를 "TEXT_PLAIN_UTF_8"(으)로 변경하는 것을 잊었습니다. 또는 데이터를 HTML로 인쇄 해 봅니다. 답변을 추가했습니다. –