Java用itext工具根据模板生成PDF

itext工具

        在企业的信息系统中,报表处理一直占比较重要的作用,iText是一种生成PDF报表的Java组件。

        iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。

        itext官网

The Leading PDF Library for Developers | iTextThe leading Java and C# PDF Library SDK. A programmable Java and .NET PDF SDK library to create, manipulate and edit PDF documents. Convert Html files to pdf, Debug pdf files, extract data from PDF and more.https://itextpdf.com/en

Adobe Acrobat DC

       Adobe Acrobat DC是Adobe公司的一款PDF编辑和阅读软件,可将纸质图片、文字迅速转化成PDF或文档格式,比如人们通过手机拍照,可让纸质版文字转化成电子版,用户可直接对文档进行修改。另外,通过移动端和PC端,Acrobat DC可让Excel、Word和PDF之间的相互转化更为便利。

         Adobe Acrobat DC官网

Adobe Acrobat DC PDF software | Adobe AcrobatMake your job easier with Adobe Acrobat DC, the trusted PDF editor and creator. Use Acrobat PDF software at your desk or on the go.https://www.adobe.com/acrobat.html

实现过程

        创建word文档

转化为pdf

 创建表单

        打开pdf用Adobe Acrobat DC的打开,然后打开工具的准备表单

 修改表单的key值

表单已建立,保存到本地磁盘。

 

实现代码

import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
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;

/**
 * itext编辑pdf
 */
public class MyItext {
    public static void main(String[] args) throws IOException, DocumentException {
        Map<String, String> data = new HashMap<String, String>();//要插入的数据
        data.put("name", "张三");
        data.put("sex", "男");
        data.put("major", "计算机科学与技术");
        data.put("hobby", "跑步");
        data.put("phone", "1xxxxxxxxxx");
        try {
            // pdf模板所在路径,就是网站制作好后下载的pdf模板路径
            String fileName = "D:\\\\itext\\\\itextTemplate.pdf";
            PdfReader reader = new PdfReader(fileName);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            PdfStamper ps = new PdfStamper(reader, bos);

            // 使用中文字体
            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);
            for (String key : data.keySet()) {
                String value = data.get(key);
                // 为字段赋值,注意字段名称是区分大小写的
                fields.setField(key, value);
            }
            //必须要调用这个,否则文档不会生成的
            ps.setFormFlattening(true);
            ps.close();

            //生成pdf路径存放的路径
            OutputStream fos = new FileOutputStream("D:\\itext\\itextTemplateOutput.pdf");
            fos.write(bos.toByteArray());
            fos.flush();
            fos.close();
            bos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

 运行结果

 打开生成的pdf,数据已插入到对应的key。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

像向日葵一样~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值