使用Itext7+thymeleaf 實現html轉PDF功能
html
方案:ide
1:導入依賴字體
2:準備字體、導出文件的路徑、寫好Thymeleaf的html模板spa
3:設置字體,字符集code
4:設置傳入Thymeleaf的html模板參數htm
5:在導出的目錄下建立一個pdf文件對象
6:將html元素轉換到PDF中模板引擎
[Maven: com.itextpdf:layout:7.1.7] utf-8
com.itextpdf.layout.font.FontProvider ### 支持自定義字體,中文及加粗(引入字體時須要用英文名稱)文檔
FontProvider fontProvider = new FontProvider();
fontProvider.addFont(fontProvider.getClass().getClassLoader().getResource("font/simsun.ttf").getPath());
fontProvider.addFont(fontProvider.getClass().getClassLoader().getResource("font/simhei.ttf").getPath());
fontProvider.addStandardPdfFonts();
[Maven: com.itextpdf:html2pdf:2.1.5]
com.itextpdf.html2pdf.ConverterProperties ### 設置屬性,包括字體,字符集等
ConverterProperties converterProperties = new ConverterProperties();
converterProperties.setFontProvider(fontProvider);
converterProperties.setCharset("utf-8");
[Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE]
org.thymeleaf.context.Context ### 設置傳入Thymeleaf的html模板參數
Context ctx = new Context();
ctx.setVariable("baseUrl", (String)extraMap.get("baseUrl"));
建立一個PDF文件,並將html元素轉換到PDF中
[Maven: com.itextpdf:layout:7.1.7]
com.itextpdf.layout.Document ### 建立PDF文檔對象
[Maven: com.itextpdf:html2pdf:2.1.5]
com.itextpdf.html2pdf.HtmlConverter ### html轉換器將html->pdf
[Maven: org.thymeleaf:thymeleaf:3.0.11.RELEASE]
org.thymeleaf.ThmplateEngine ### thymeleaf模板引擎類,將html模板轉化爲String
//中文Invoice
File invoiceFileZh = new File("PDF路徑.pdf");
Document documentZh = new Document(new PdfDocument(new PdfWriter(new FileOutputStream(invoiceFileZh))), PageSize.A4);
documentZh.setMargins(10, 20, 10, 20);//設置邊距
HtmlConverter.convertToElements(templateEngine.process("invoice/en.html", ctx), converterProperties)
.stream().forEach(iElement -> documentZh.add((IBlockElement) iElement)); documentZh.close(); 關閉文檔流