1. 程式人生 > >java將html的圖文轉化為PDF檔案輸出

java將html的圖文轉化為PDF檔案輸出

首先在我的專案的resource目錄下建立相應的目錄,如圖


其中file用來存放一個logo以及生成的PDF檔案,font資料夾用來存放font 字型

然後在專案的 pom.xml中新增引用

<dependency>
    <groupId>org.xhtmlrenderer</groupId>
    <artifactId>flying-saucer-pdf</artifactId>
    <version>9.1.5</version>
</dependency>

然後寫了一個測試類來測試是否成功生成

import 
com.lowagie.text.pdf.BaseFont; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer;
import java.io.FileOutputStream; import java.io.OutputStream; /** * Created by hongzhenyue on 18/2/28. */ @RunWith(SpringRunner.class) @SpringBootTest public class Html2PdfTest { @Test public void testHtml2Pdf() throws Exception{ //指定PDF的存放路徑 String outputFile = "/Users/hongzhenyue/Desktop/backup/spring_boot_demo/src/main/resources/file/test.pdf"
; OutputStream os = new FileOutputStream(outputFile); ITextRenderer renderer = new ITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); //指定字型。為了支援中文字型 fontResolver.addFont("font/arialunicodems.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); StringBuffer html = new StringBuffer(); html.append("<!DOCTYPE html>\n" + "<html lang=\"en\">\n" + "<head>\n" + " <meta charset=\"UTF-8\"></meta>\n" + " <title>Issue Payment Receipt</title>\n" + " <style type=\"text/css\">\n" + " body {\n" + " font-family: Arial Unicode MS;\n" + " }\n" + " </style>\n" + "</head>\n" + "<body>\n" + " <img src=\"file/logo.png\" style=\"width:160px;height:80px;\"></img>\n" + " <br/>\n" + " <br/> 建設銀行\n" + " <br/> 12345678901\n" + " <br/> 1000RMB\n" + " <br/> 姓名:李四\n" + " <br/> 單號:123456\n" + " <br/>\n" + "</body>\n" + "</html>"); renderer.setDocumentFromString(html.toString()); // 解決圖片的相對路徑問題 renderer.getSharedContext().setBaseURL("file:/Users/hongzhenyue/Desktop/backup/spring_boot_demo/src/main/resources/file"); renderer.layout(); renderer.createPDF(os); renderer.finishPDF(); renderer = null; os.close(); } }

然後執行測試code,發現在file檔案下面已經生成了一個PDF檔案


開啟PDF


可見已經輸出了我們想要的東西,至此,我們很簡單地將html轉化成了PDF檔案。