2014-01-20 138 views
0

我已經安裝了doPDF打印機驅動程序,並且我想從Java將它用於將HTML轉換爲PDF。Java將HTML打印爲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); 

的問題是,當我打開out.pdf與任何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中,包含頁眉和頁腳,包括頁數,日期,用戶等。這適用於Windows或Linux。

萬一你不需要沉默:

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

提示用戶選擇打印機,去的PDFCreator或doPDF。

希望它有幫助!