Java使用Flying Saucer實現HTML代碼產生PDF文檔

來源:互聯網
上載者:User

標籤:finally   catch   alt   技術   http   rri   路徑   byte   org   

1、需要的jar包:org.xhtmlrenderer.flying-saucer-pdf-itext5,itext.itext,Maven依賴如下:

 1 <dependency> 2 <groupId>org.xhtmlrenderer</groupId> 3 <artifactId>flying-saucer-pdf-itext5</artifactId> 4 <version>9.0.7</version> 5 </dependency> 6 <dependency> 7 <groupId>itext</groupId> 8 <artifactId>itext</artifactId> 9 <version>1.3</version>10 </dependency>

 

2、中文支援

由於HTML代碼中存在中文,需要添加中文支援,需要把需要的字型檔添加到項目中

3、轉換PDF主代碼

 1 /** 2 * HTML代碼轉PDF文檔 3 *  4 * @param content 待轉換的HTML代碼 5 * @param storagePath 儲存為PDF檔案的路徑 6 */ 7 @Override 8 public void parsePdf(String content, String storagePath) { 9 FileOutputStream os = null;10 try {11 File file = new File(storagePath);12 if(!file.exists()) {13 file.createNewFile();14 }15 os = new FileOutputStream(file);16 17 ITextRenderer renderer = new ITextRenderer();18 //解決中文支援問題19 ITextFontResolver resolver = renderer.getFontResolver();20 resolver.addFont("/static/font/ARIALUNI.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);21 renderer.setDocumentFromString(content);22 // 解決圖片的相對路徑問題,圖片路徑必須以file開頭23 // renderer.getSharedContext().setBaseURL("file:/");24 renderer.layout();25 renderer.createPDF(os);26 27 } catch (DocumentException e) {28 e.printStackTrace();29 } catch (IOException e) {30 e.printStackTrace();31 }finally {32 if(null != os) {33 try {34 os.close();35 } catch (IOException e) {36 e.printStackTrace();37 }38 }39 }40 }

 

4、如果從檔案中讀取HTML代碼,需要使用InputStream進行讀取,不要使用FileReader讀取,不知道為什麼,使用FileReader讀取的內容解析會錯誤

1 StringBuilder content = new StringBuilder();2 byte[] bys = new byte[1024];3 int len;4 in = new BufferedInputStream(new FileInputStream(htmlFilePath));5 while ((len = in.read(bys)) != -1) {6 content.append(new String(bys, 0, len));7 }

 

Java使用Flying Saucer實現HTML代碼產生PDF文檔

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.