iText7 大批量文字时,html转pdf操作文档

一、准备工作

1.根据原有的pdf模板,制作html模板。

iText7 大批量文字时,html转pdf操作文档_第1张图片
image
iText7 大批量文字时,html转pdf操作文档_第2张图片
image

图一为原有的pdf格式的模板,图中的蓝色区域是可以填充内容的区域,区域固定不可根据填充的内容自动扩充。为了可以使模板更加灵活,设计了html模板,如图二所示,该模板构造为:第1部分是一个样式居中的

标签,第2、4部分是一个表格,第3部分是一个具有首行缩进样式的
标签。

2.准备fft格式的字体文件,用户html生成pdf时的字体渲染。

二、开发工作

1.创建maven项目,导包




    

      com.itextpdf

      itext7-core

      ${itext.version}

      pom

    

    

    

      com.itextpdf

      html2pdf

      2.0.0

    

  

    

      com.itextpdf

      font-asian

      7.1.2

    



    

      org.jsoup

      jsoup

      1.10.2

    

2.将准备的字体和html模板复制到项目的resources目录中。

iText7 大批量文字时,html转pdf操作文档_第3张图片
image.png

3.主要实现代码

 /**
     *
     * @param baseUri   html用到的css、js、图片等资源根目录。
     * @param src       html模板文件路径
     * @param dest      生成的pdf文件输出的路径
     * @throws IOException
     */
    public void createPdf(String baseUri, String src, String dest) throws IOException {
        try {
            //字体方案
            fontProgram = FontProgramFactory.createFont(FONT);
            //转换为pfd中的属性设置对象
            ConverterProperties proper = new ConverterProperties();
            //字体设置,解决中文不显示问题
            FontSet fontSet = new FontSet();
            fontSet.addFont(fontProgram, PdfEncodings.IDENTITY_H);
            FontProvider fontProvider = new FontProvider(fontSet);
            proper.setFontProvider(fontProvider);
            //html用到的css、js、图片等资源根目录。
            proper.setBaseUri(baseUri);
            //开始转换
            HtmlConverter.convertToPdf(new FileInputStream(src),
                     new FileOutputStream(dest), proper);
        } catch (java.io.IOException e) {
            e.printStackTrace();
        }

4.执行

准备一篇文章,如下图三所示,该文章的大小为1.07MB,将这些文字填充到html中的效果图为图四,执行程序转成pdf文件,所有时间为1680ms。

iText7 大批量文字时,html转pdf操作文档_第4张图片
图三、txt文件大小

iText7 大批量文字时,html转pdf操作文档_第5张图片
图四、html效果图

你可能感兴趣的:(iText7 大批量文字时,html转pdf操作文档)