pdf中文问题

导出pdf中文无法显示

今天导出pdf的时候遇到的一些问题,比如中文无法显示
需求:要根据一个模板来填充数据之后导出pdf
问题:导出的模板中文展示不了
解决方法如下代码,直接继承了XMLWorkerFontProvider 实现了获取字体的方法实现默认宋体显示:

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.FontProvider;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.tool.xml.XMLWorkerFontProvider;
import com.itextpdf.tool.xml.XMLWorkerHelper;
import org.springframework.stereotype.Component;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.OutputStream;

import static java.nio.charset.StandardCharsets.UTF_8;

@Component
public class PdfHelper extends XMLWorkerFontProvider implements FontProvider {

    //将content生成pdf导入到os中
    public void pdf(byte[] content, OutputStream os) throws DocumentException, IOException {
        Document document = new Document(PageSize.A4);
        PdfWriter writer = PdfWriter.getInstance(document, os);
        document.open();
        XMLWorkerHelper.getInstance().parseXHtml(writer, document, new ByteArrayInputStream(content), null, UTF_8,
                this);
        document.close();
    }


    /** 解决转换pdf的时候,中文无法显示的问题 **/
    @Override
    public Font getFont(String fontname, String encoding, float size, int style) {
        if (fontname == null) {
            fontname = "宋体";
        }
        return super.getFont(fontname, encoding, size, style);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值