package com.dsh.course.util; import com.itextpdf.html2pdf.ConverterProperties; import com.itextpdf.html2pdf.HtmlConverter; import com.itextpdf.kernel.events.PdfDocumentEvent; import com.itextpdf.kernel.font.PdfFont; import com.itextpdf.kernel.font.PdfFontFactory; import com.itextpdf.kernel.geom.PageSize; import com.itextpdf.kernel.pdf.PdfDocument; import com.itextpdf.kernel.pdf.PdfWriter; import com.itextpdf.layout.font.FontProvider; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; /** * @author zhibing.pu * @Date 2023/8/14 11:13 */ public class HtmlToPdfUtils { public static void convertToPdf(InputStream inputStream, String waterMark, OutputStream outputStream) throws IOException { PdfWriter pdfWriter = new PdfWriter(outputStream); PdfDocument pdfDocument = new PdfDocument(pdfWriter); //设置为A4大小 pdfDocument.setDefaultPageSize(PageSize.A4); //添加水印 // pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE, new WaterMarkEventHandler(waterMark)); //添加页码 //pdfDocument.addEventHandler(PdfDocumentEvent.END_PAGE,new PageEventHandler()); //添加中文字体支持 ConverterProperties properties = new ConverterProperties(); FontProvider fontProvider = new FontProvider(); PdfFont sysFont = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false); fontProvider.addFont(sysFont.getFontProgram(), "UniGB-UCS2-H"); //添加自定义字体,例如微软雅黑 /*if (StringUtils.isNotBlank(fontPath)){ PdfFont microsoft = PdfFontFactory.createFont(fontPath, PdfEncodings.IDENTITY_H, false); fontProvider.addFont(microsoft.getFontProgram(), PdfEncodings.IDENTITY_H); }*/ properties.setFontProvider(fontProvider); HtmlConverter.convertToPdf(inputStream, pdfDocument, properties); pdfWriter.close(); pdfDocument.close(); } }