2014-01-20 2 views
0

나는 doPDF 프린터 드라이버를 설치했으며 자바에서 HTML을 사용하여 PDF로 변환하려고합니다.자바 인쇄 html as pdf

PrintService service = getPrinterByName("doPDF");     
DocPrintJob printJob = service.createPrintJob(); 
Doc document = new SimpleDoc(conn.getInputStream(), DocFlavor.INPUT_STREAM.AUTOSENSE, null); 
PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); 
File f = new File(new File(System.getProperty("user.home")),"out.pdf"); 

attr.add(new Destination(f.toURI())); 
printJob.print(document, attr); 

문제는 내가 어떤 PDF 리더와 out.pdf 열 때 형식 오류를 말한다 및 메모장 ++ 그냥 HTML을 보여주고 있다는 점이다.

private PrintService getPrinterByName(String name) { 
    PrintService[] list = getPrintersList(); 
    if (list.length > 0) { 
     for (PrintService service : list) { 
      if (service.getName().contains(name)) { 
       return service; 
      } 
     } 
    } 
    return null; 
} 

private PrintService[] getPrintersList() { 
    DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE; 
    PrintService[] services = PrintServiceLookup.lookupPrintServices(flavor, null); 

    return services; 
} 
+0

'getPrinterByName()'의 소스를 게시하십시오. – Aerospace

답변

0

이 작업이 필요하지 않으며, 유일한 방법은 OpenOffice API를 사용하는 것입니다. 다른 방법으로는 사용자 입력/확인이 필요합니다.

나는 이것을 달성하기 위해 JOD Converter을 사용했습니다. 그리고 조금 더, 나는 모든 파일을 PDF (예 : 모든 Microsoft Office 문서, 모든 이미지, 모든 Open Office 문서, 텍스트, HTML)로 변환 한 다음 페이지 수, 날짜 등 헤더 및 바닥 글과 함께 모든 PDF를 하나의 PDF로 병합합니다. , 사용자 및. 이것은 Windows 또는 Linux에서 모두 작동합니다.

그냥 경우에 당신은 침묵 필요가 없습니다

public void print() { 
     Desktop desktop = Desktop.getDesktop(); 
     try { 
      desktop.print(new File("web.html")); 
     } catch (IOException e) {   
      e.printStackTrace(); 
     } 
    } 

사용자가 프린터를 선택을 PDFCreater 또는 doPDF를 위해 이동하라는 메시지가 표시됩니다.

희망이 있습니다.