Java itextpdf将HTML转PDF解决图片或中文不显示

Java itextpdf将HTML转PDF解决图片或中文不显示,第1张

Java itextpdf将HTML转PDF解决图片或中文显示

之前博主用了很多的html转pdf的插件,多多少少都有些问题,不是图片不显示,就是无法显示中文,或者是需要导入外部字体文件.ttc。通过好几天的研究最终发现了无需导入外部字体文件,或者将图片转base64的方式。废话不多说直接上代码!

首先导入maven的jar包


    com.itextpdf
    html2pdf
    2.1.0



    com.itextpdf
    layout
    7.1.3

 java工具类代码

import com.itextpdf.html2pdf.ConverterProperties;
import com.itextpdf.html2pdf.HtmlConverter;
import com.itextpdf.html2pdf.attach.impl.layout.HtmlPageBreak;
import com.itextpdf.html2pdf.resolver.font.DefaultFontProvider;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.pdf.Pdfdocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.document;
import com.itextpdf.layout.element.IBlockElement;
import com.itextpdf.layout.element.IElement;
import com.itextpdf.layout.font.FontProvider;


import java.io.*;
import java.util.List;


public class Html2PdfUtil {
 
    public static void htmlToPdf(String htmlPath,String pdfPath) throws Exception {
        Pdfdocument pdf = new Pdfdocument(new PdfWriter(pdfPath));
        document document = new document(pdf, PageSize.A2);
        InputStream htmlStream = new FileInputStream(htmlPath);

        ConverterProperties converterProperties = new ConverterProperties();
        //解决中文无法显示
        FontProvider dfp = new DefaultFontProvider(true, true, true);
        converterProperties.setFontProvider(dfp);

        List elements = HtmlConverter.convertToElements(htmlStream,converterProperties);
        for (IElement element : elements) {
            // 分页符
            if (element instanceof HtmlPageBreak) {
                document.add((HtmlPageBreak) element);
                //普通块级元素
            } else {
                document.add((IBlockElement) element);
            }
        }
        document.close();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5672062.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存