欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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());