美文网首页
iText7 大批量文字时,html转pdf操作文档

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

作者: 不负好时光__ | 来源:发表于2019-02-26 15:39 被阅读0次

    一、准备工作

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

    image image

    图一为原有的pdf格式的模板,图中的蓝色区域是可以填充内容的区域,区域固定不可根据填充的内容自动扩充。为了可以使模板更加灵活,设计了html模板,如图二所示,该模板构造为:第1部分是一个样式居中的<div>标签,第2、4部分是一个<table>表格,第3部分是一个具有首行缩进样式的<div>标签。

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

    二、开发工作

    1.创建maven项目,导包

    
    <!-- 添加itext 7 用到的包 -->
    
        <dependency>
    
          <groupId>com.itextpdf</groupId>
    
          <artifactId>itext7-core</artifactId>
    
          <version>${itext.version}</version>
    
          <type>pom</type>
    
        </dependency>
    
        <!--itext7 html转pdf用到的包-->
    
        <dependency>
    
          <groupId>com.itextpdf</groupId>
    
          <artifactId>html2pdf</artifactId>
    
          <version>2.0.0</version>
    
        </dependency>
    
      <!--itext7支持中文-->
    
        <dependency>
    
          <groupId>com.itextpdf</groupId>
    
          <artifactId>font-asian</artifactId>
    
          <version>7.1.2</version>
    
        </dependency>
    
    <!--jsoup 操作html的包-->
    
        <dependency>
    
          <groupId>org.jsoup</groupId>
    
          <artifactId>jsoup</artifactId>
    
          <version>1.10.2</version>
    
        </dependency>
    
    

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

    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。

    图三、txt文件大小
    图四、html效果图

    相关文章

      网友评论

          本文标题:iText7 大批量文字时,html转pdf操作文档

          本文链接:https://www.haomeiwen.com/subject/hybayqtx.html