java pdf模版的遍历_java使用itext操作填充pdf模板

本文介绍了如何在Java中使用iText库来操作PDF模板,包括从Word创建PDF模板,然后通过Adobe Acrobat识别表单域,并在Java代码中填充数据。文章详细展示了设置字体、读取PDF、遍历并填充表单字段的步骤,提供了一个测试用例来演示具体实现。

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

一、先创建pdf模板

1.先用word做出界面

5b46a9ea0d8d

image.png

2.再转换成pdf格式

5b46a9ea0d8d

image.png

5b46a9ea0d8d

image.png

3.用Adobe Acrobat 打开你刚刚用word转换成的pdf

5b46a9ea0d8d

image.png

会出现如下界面

5b46a9ea0d8d

image.png

下一步

5b46a9ea0d8d

image.png

点击浏览,选择刚才你转换好的pdf

5b46a9ea0d8d

image.png

下一步

4.打开后它会自动侦测并命名表单域,右键表单域,点击属性,出现文本域属性对话框,有的人说要改成中文字体,可是我没有改一样成功啦

5b46a9ea0d8d

image.png

5.一般情况下不需要修改什么东西,至少我没有修改哦

5b46a9ea0d8d

image.png

6.直接另存为就行了

二、代码部分:

1、java项目引入依赖

com.itextpdf

itextpdf

${itextpdf.version}

2、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目录下。

5b46a9ea0d8d

image.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值