美文网首页
iText使用PDF模板生成输出PDF

iText使用PDF模板生成输出PDF

作者: 冷态度0817 | 来源:发表于2019-03-07 14:19 被阅读0次

下载Adobe Acrobat 工具制作PDF模板,对模板中的变量使用表单进行设置,如下图:


准备表单 变量设置

代码实现:

/*
 * Copyright (c) 2005, 2019, EVECOM Technology Co.,Ltd. All rights reserved.
 * EVECOM PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 */

import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.*;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * description
 * created       2019/3/5 18:05
 *
 * @author Arno Chen
 * @version --添加版本信息
 * @see --添加类中引用的相关类和接口
 * @since Version 1.0
 */
public class exportPdfTest {
    public static void main(String[] args) throws Exception {
        test();
        System.out.println("success");
    }

    public static void test() throws IOException, DocumentException {
        String fileName = "D:/index.pdf"; // pdf模板
        PdfReader reader = new PdfReader(fileName);
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        /* 将要生成的目标PDF文件名称 */
        PdfStamper ps = new PdfStamper(reader, bos);
        PdfContentByte under = ps.getUnderContent(1);

          /* 使用中文字体 */
        BaseFont bf = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
        ArrayList<BaseFont> fontList = new ArrayList<BaseFont>();
        fontList.add(bf);

        /* 取出报表模板中的所有字段 */
        AcroFields fields = ps.getAcroFields();
        fields.setSubstitutionFonts(fontList);
        fillData(fields, data());

        /* 必须要调用这个,否则文档不会生成的 */
        ps.setFormFlattening(true);
        ps.close();


        OutputStream fos = new FileOutputStream("D:/zsResult.pdf");
        fos.write(bos.toByteArray());
        fos.flush();
        fos.close();
        bos.close();
    }

    public static void fillData(AcroFields fields, Map<String, String> data)
            throws IOException, DocumentException {
        for (String key : data.keySet()) {
            String value = data.get(key);
            fields.setField(key, value); // 为字段赋值,注意字段名称是区分大小写的
        }
    }

    public static Map<String, String> data() {
        Map<String, String> data = new HashMap<String, String>();
        data.put("name", "小猪佩奇");
        data.put("date", "2019年3月7号");
        return data;
    }
}




生成文件

执行代码出现输出中文

Font 'STSongStd-Light' with 'UniGB-UCS2-H' is not recognized.问题

网上找了解决方案都是需要改itext-asian的包名,改来改去都不行,看到别人上传了修改后的jar包,去CSDN下载需要积分(恶心),几经周折找到了可用的包,直接分享出来。

jar包下载地址:

链接:https://pan.baidu.com/s/1ADsiMe42aLVrgNBJjPdDkg 提取码:zwww
复制这段内容后打开百度网盘手机App,操作更方便哦

或者gradle依赖一下对应版本

compile group: 'com.itextpdf', name: 'itextpdf', version: '5.4.3'
compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0'

相关文章

  • iText使用PDF模板生成输出PDF

    下载Adobe Acrobat 工具制作PDF模板,对模板中的变量使用表单进行设置,如下图: 代码实现: 执行代码...

  • ITEXT 输出PDF及获取当前文档的高度

    Java可以用ITEXT 输出PDF,比如要生成下面的PDF 需要依赖 以上例子介绍如何使用itext的table...

  • IText使用 PDF模板生成PDF

    项目中加入Maven依赖: 创建PDFUtil工具类(可根据需要自行修改),如下:参数: 返回值:ByteArra...

  • itext生成PDF(二)

    itext生成PDF excel 示例 生成效果 代码

  • itext 生成 PDF(一)

    itext 生成 PDF(二) 官网:http://itextsupport.com/apidocs/itext...

  • 使用Itext生成pdf

    参考文档 官方文档是最好的参考文档:https://developers.itextpdf.com/content...

  • Java 生成 PDF 文档

    开源框架支持iText,生成PDF文档,还支持将XML、Html文件转化为PDF文件;Apache PDFBox,...

  • Java生成PDF

    Java生成PDF有两种办法:1.利用PDF模板,读入模板,填充数据,生成带数据的PDF。 ...

  • itext读取pdf表单字段无序问题解决

    问题描述 在使用itext的jar包读取pdf表单模板文件的时候,获取到的字段需要按照pdf设置的跳位编号排序(即...

  • pdf生成

    Java生成PDF有两种办法:1.利用PDF模板,读入模板,填充数据,生成带数据的PDF。 Jasperrepor...

网友评论

      本文标题:iText使用PDF模板生成输出PDF

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