1.maven jar包依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext7-core</artifactId>
<version>7.1.10</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>html2pdf</artifactId>
<version>2.1.7</version>
</dependency>
2.核心代码
public static ByteArrayOutputStream htmlToPdf(String htmlStr){
Document document = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
PdfDocument pd = new PdfDocument(new PdfWriter(baos));
document = new Document(pd, PageSize.A3);
document.setProperty(Property.SPLIT_CHARACTERS, new DefaultSplitCharacters() {
@Override
public boolean isSplitCharacter(GlyphLine text, int glyphPos) {
//return super.isSplitCharacter(text, glyphPos);//覆盖当前
return true;//解决word-break: break-all;不兼容的问题,解决纯英文或数字不自动换行的问题
}
});
DefaultFontProvider defaultFontProvider = new DefaultFontProvider(false, false, false);
//字体路径
defaultFontProvider.addFont("./font/NotoSansCJKsc-Regular.otf");
ConverterProperties c = new ConverterProperties();
c.setCharset("utf-8");
c.setFontProvider(defaultFontProvider);
List<IElement> list = HtmlConverter.convertToElements(htmlStr, c);
for (IElement ie : list) {
document.add((IBlockElement) ie);
}
} catch (IOException e) {
log.error("HtmlToPDF 转换pdf失败....",e);
throw new BusException();
} catch (Exception e) {
log.error("HtmlToPDF 转换pdf失败....", e);
throw new BusException();
} finally {
if (document != null) {
try {
document.close();
} catch (Exception e) {
log.error("document关闭异常...",e);
throw new BusException();
}
}
}
return baos;
}