java模板变量_pdf模板,java替换变量

本文介绍如何使用Java和iTextPDF库创建PDF模板,通过AcroFields操作实现表单字段的数据填充,并将填好数据的PDF导出。重点展示了添加中文字体和数据驱动表单填写的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、创建pdf

现在word中创建模板:

6880f174aeb5067c2cd6d591bd4a9e3c.png

输出为pdf文件2.pdf。

4fd207993922da1cc5d7c6dd767cb186.png

2、java项目引入依赖

com.itextpdf

itextpdf

${itextpdf.version}

3、java实现

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.HashMap;

import java.util.Map;

import org.junit.Test;

import com.itextpdf.text.pdf.AcroFields;

import com.itextpdf.text.pdf.BaseFont;

import com.itextpdf.text.pdf.PdfReader;

import com.itextpdf.text.pdf.PdfStamper;

public class TestPdf {

@Test

public void testPdf() {

String inputFileName = "E:\\1\\2.pdf";

String outputFileName = "E:\\1\\3.pdf";

OutputStream os = null;

PdfStamper ps = null;

PdfReader reader = null;

try {

os = new FileOutputStream(new File(outputFileName));

// 2 读入pdf表单

reader = new PdfReader(inputFileName);

// 3 根据表单生成一个新的pdf

ps = new PdfStamper(reader, os);

// 4 获取pdf表单

AcroFields form = ps.getAcroFields();

// 5给表单添加中文字体 这里采用系统字体。不设置的话,中文可能无法显示

// BaseFont bf = BaseFont.createFont("C:/Windows/Fonts/SIMYOU.TTF",

// BaseFont.IDENTITY_H, BaseFont.EMBEDDED);

// 方法二:使用iTextAsian.jar中的字体

// BaseFont baseFont =

// BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);

BaseFont bf = BaseFont.createFont("/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);

form.addSubstitutionFont(bf);

// 6查询数据================================================

Map data = new HashMap();

data.put("question", "你叫什么名字?");

data.put("answer", "张三");

// 7遍历data 给pdf表单表格赋值

for (String key : data.keySet()) {

form.setField(key, data.get(key).toString());

}

ps.setFormFlattening(true);

System.out.println("===============PDF导出成功=============");

} catch (Exception e) {

System.out.println("===============PDF导出失败=============");

e.printStackTrace();

} finally {

try {

ps.close();

reader.close();

os.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

注意:SIMYOU.TTF放在resources目录下。

7fe67ae8e359aea58d37b474316b5094.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值