XMLWorkerHelper中文不显示
程序员文章站
2022-04-10 14:54:14
...
XMLWorkerHelper生成pdf在windows下正常。但是linux下因为font文件不存在所以中文不显示。
要使用itext-assian jar包。
1.maven中添加
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
2.新建一个类,重写父类的getFont方法
public class FontProviderUtil extends XMLWorkerFontProvider {
@Override
public Font getFont(final String fontname, final String encoding,
final boolean embedded, final float size, final int style,
final BaseColor color) {
BaseFont bf = null;
try {
bf = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
} catch (Exception e) {
log.info(e.getMessage());
e.printStackTrace();
}
Font font = new Font(bf, size, style, color);
font.setColor(color);
return font;
}
}
3.xml转pdf关键代码(具体的代码请到以下博客查看:java生成pdf的方法)
XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, doc, input, null,charset,new FontProviderUtil());