2015-01-22 3 views
0

인쇄 대화 상자를 표시하지 않고 사용자 정의 프린터에서 HTML 파일을 인쇄하려고합니다. 아래 코드는 실행하지만 IE에 표시되는 실제 페이지가 아닌 HTML 코드를 인쇄합니다.Java Print API를 사용하여 HTML이 아닌 코드를 인쇄하는 방법은 무엇입니까?

import java.io.File; 
import java.net.MalformedURLException; 
import java.net.URL; 
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.HashPrintServiceAttributeSet; 
import javax.print.attribute.PrintServiceAttributeSet; 
import javax.print.attribute.standard.PrinterName; 
public class Print { 
    public static void main(String[] args) throws PrintException { 
     String printerName = "\\\\network-path\\myPrinter"; 
     String fileName = "C:\\log\\myLog.html"; 

     PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet(); 
     printServiceAttributeSet.add(new PrinterName(printerName, null)); 
     PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null, printServiceAttributeSet); // list of printers 

     URL url = null; 
     try { 
      url = (new File(fileName)).toURI().toURL(); 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     DocFlavor flavor = DocFlavor.URL.AUTOSENSE; 
     SimpleDoc doc = new SimpleDoc(url, flavor, null); 

     PrintService printService = printServices[0]; 
     DocPrintJob printJob = printService.createPrintJob(); 
     if(printService.isDocFlavorSupported(flavor)) { 
      try { 
       printJob.print(doc, null); 
      } catch (PrintException e) { 
       e.printStackTrace(); 
      } 
     } else { 
      throw new PrintException("HTML flavor not supported on this printer"); 
     } 
    } 
} 

JEditorPane.print() 메소드를 사용하여 HTML을 인쇄 할 수 있습니다. JEditorPane.print()를 사용하지 않고이 작업을 수행 할 수 있는지 궁금합니다. 누군가 제발 도와 줄 수 있니?

답변

1

먼저 HTML 렌더링 엔진을 사용하여 HTML을 렌더링 한 다음 결과 이미지를 인쇄해야합니다. Java 기반 HTML 렌더링 엔진이 몇 가지 있습니다. 나는 그들 자신을 시도하지 않았으므로 어느 것을 추천해야할지 모른다. Google은 목록 상단에 http://cssbox.sourceforge.net/을 넣습니다.

CSSBox에는 필요한 것을 할 수있는 ImageRenderer 클래스가 있습니다. "문서를 렌더링하고 결과를 비트 맵 또는 벡터 이미지에 저장". 비트 맵을 만들면 인쇄 할 수 있습니다.

http://cssbox.sourceforge.net/api/org/fit/cssbox/demo/ImageRenderer.html

+0

감사합니다. 표준 JDK API를 사용한다는 것은 JEditorPane.print()가 없으면 불가능하다는 것을 의미합니다. – ParagJ