java使用itext填充pdf模板,超简单教学,有手就行
java使用itext填充pdf模板1、先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线2、将Word另存为pdf3、打开电脑中的Adobe Acrobat pro DC(这个应该win10 都有,搜索一下就出来了),点击文件→创建→创建表单4、然后导入刚刚生成的pdf会出来这个页面双击这个阴影部分,将名称改成你要设置的名称,后面要根据这个名称来给他赋值全部设置好以后就可以另存
·
java使用itext填充pdf模板
1、先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线
2、将Word另存为pdf
3、打开电脑中的Adobe Acrobat pro DC(这个应该win10 都有,搜索一下就出来了),点击 文件→创建→创建表单
4、然后导入刚刚生成的pdf
会出来这个页面
双击这个阴影部分,将名称改成你要设置的名称,后面要根据这个名称来给他赋值
全部设置好以后就可以另存为了
5、前期的pdf模板准备好了,就开始上代码!
1、首先导入我们所需要的依赖
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.13</version>
</dependency>
2、上代码
package com.icaremgt.admin.test;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.*;
import org.junit.Test;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class TestPdf {
@Test
public void testPdf() {
// 模板文件路径
String inputFileName = "F:\\pdfWork\\1\\mytests.pdf";
// 生成的文件路径
String outputFileName = "F:\\pdfWork\\2\\test9.pdf";
OutputStream os = null;
PdfStamper ps = null;
PdfReader reader = null;
PdfStamper stamper = 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("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
form.addSubstitutionFont(bf);
// 6查询数据================================================
Map<String, Object> data = new HashMap<String, Object>();
data.put("childrenName", "李四");
data.put("gender", "男");
data.put("year", "2021");
data.put("month", "09");
data.put("day", "23");
data.put("userName", "张三");
data.put("address", "河南省案发时发放手动阀是的");
// 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();
}
}
}
}
3、字体需要放在resources目录下
BaseFont bf = BaseFont.createFont("Font/SIMYOU.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
这个SIMYOU.TTF就是字体 (字体下载地址)
6、开始测试
导出成功!
7、看看效果
ok,非常完美!
可以关注我,下一期讲java使用itext将图片放到pdf模板的指定位置
如果觉得这种pdf模板的方式不好,可以参考我的另一篇博文,可以不用设置pdf模板就直接生成pdf
itext5固定段落Paragraph,指定段落位置
问题总结:
@gao1123576431 这位老哥提出问题说赋值了,但是最后导出的PDF是没有值得,后来他给出了解决办法,引入itext-asian
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
更多推荐
已为社区贡献2条内容
所有评论(0)