itext操作表单域导出PDF,俗称扣模板
/**
* templateUrl 模板文件路径,包含文件名
* targetUrl 目标路径
* dateMap 填充数据
*/
public class CreatePdfUtil {
public static String createAllPdf(String templateUrl,String targetUrl,HashMap dataMap) throws Exception {
//填充创建pdf
PdfReader reader = null;
PdfStamper stamp = null;
String times = "";
try {
reader = new PdfReader(templateUrl); SimpleDateFormat simp = new SimpleDateFormat("yyyyMMdd");
times = simp.format(new Date()).trim();
times+=UUIDUtil.getUUID();
times = times;
//创建生成报告名称
String root = targetUrl;
if (!new File(root).exists())
new File(root).mkdirs();
File deskFile = new File(root, times + ".pdf");
stamp = new PdfStamper(reader, new FileOutputStream(deskFile));
PdfWriter writer = stamp.getWriter();
TextField field = new TextField(writer, new Rectangle(200, 200, 400, 300), "field1");
field.setOptions(TextField.MULTILINE);
//取出报表模板中的所有字段
AcroFields form = stamp.getAcroFields();
// 填充数据
transformRegular(form,dataMap);
stamp.setFormFlattening(true);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (stamp != null) {
stamp.close();
}
if (reader != null) {
reader.close();
}
}
return times;
}
/**
* 填充规整的表单域
*
* @param form
*/
public static void transformRegular(AcroFields form, HashMap dataMap) throws IOException, DocumentException {
if (dataMap == null || dataMap.size() == 0) {
return;
}
// 设置中文显示
BaseFont bfChinese = BaseFont.createFont( "STSong-Light", "UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
String key = "";
//注意,设置中文使用下面的方法,form.setFieldProperty(key,"textfont",bfChinese,null)这种方法没作用
form.addSubstitutionFont(bfChinese);
Iterator ekey = dataMap.keySet().iterator();
Object obj = null ;
while (ekey.hasNext()) {
key = ekey.next().toString();
try {
obj = dataMap.get(key);
//非空放入
if( dataMap.get(key) != null) {
//form.setFieldProperty(key,"textfont",bfChinese,null);
form.setField(key, dataMap.get(key).toString());
}
} catch (IOException e) {
e.printStackTrace();
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
依赖---------
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.5.10</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
注:如果填充时字数太多想要换行,则需在PDF模板里面直接对文本域的样式进行设置,选择允许多行即可。
itext操作表单域导出PDF,俗称扣模板的更多相关文章
- 操作表单域中的value值
HTML <form action=""> <input type="radio" name="sex" value=&q ...
- Java 创建、填充PDF表单域
表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ...
- ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程
基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...
- java利用itext导出pdf
项目中有一功能是导出历史记录,可以导出pdf和excel,这里先说导出pdf.在网上查可以用那些方式导出pdf,用itext比较多广泛. 导出pdf可以使用两种方式,一是可以根据已有的pdf模板,进行 ...
- Java导出Pdf格式表单
前言 作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求 需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- Itext导出PDF,word,图片案例
iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...
- java根据模板导出PDF(利用itext)
一.制作模板 1.下载Adobe Acrobat 9 Pro软件(pdf编辑器),制作模板必须使用该工具. 2.下载itextpdf-5.5.5.jar.itext-asian-5.2.0.j ...
- java动态导出PDF(利用itext)
项目基于ssm框架,使用itext动态导出pdf文件: 1.引入两个jar包:itextpdf-5.5.5.jar.itext-asian-5.2.0.jar 说明: 1.itextpdf-5.5.5 ...
随机推荐
- EasyUI表单验证插件扩展
$.extend($.fn.validatebox.defaults.rules, { regex: { validator: function (value, param) { var regex ...
- Network Emulator for Windows Toolkit(模拟弱网络环境的软件)
前言和下载地址 用户会在各种网络环境下使用我们的app,pc应用,我们决不能祈求用户的网络环境都是稳定的,因此我们需要模拟出弱网络的情况,用来测试我们的APP在弱网络环境下的表现如何. Network ...
- 数据结构(集合)学习之List
集合 框架关系图: Collection接口下面有三个子接口:List.Set.Queue.此篇是关于List<E>的简单学习总结. 补充:HashTable父类是Dictionary,不 ...
- 【剑指Offer】62、序列化二叉树
题目描述 请实现两个函数,分别用来序列化和反序列化二叉树 二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存.序列化可以基于先序. ...
- LeetCode 145. 二叉树的后序遍历 (用栈实现后序遍历二叉树的非递归算法)
题目链接:https://leetcode-cn.com/problems/binary-tree-postorder-traversal/ 给定一个二叉树,返回它的 后序 遍历. 示例: 输入: [ ...
- SP7258 SUBLEX - Lexicographical Substring Search - 后缀自动机,dp
给定一个字符串,求本质不同排名第k小的子串 Solution 后缀自动机上每条路径对应一个本质不同的子串 按照 TRANS 图的拓扑序,DP 计算出每个点发出多少条路径 (注意区别 TRANS 图的拓 ...
- linux下定时网站文件备份和数据备份以及删除旧备份标准代码
直切正题: 文件备份:web.sh 数据备份:db.sh 删除旧备份:clear.sh vi web.sh文件内容为: #!/bin/bash 解释:shell脚本标准头 cd 网站文 ...
- JSP页面取不到ModelAndView里面存的值
方法1:在jsp页面上加上<%@ page isELIgnored="false" %>
- 二分类模型之logistic
liner classifiers 逻辑回归用在2分类问题上居多.它是一个非线性的回归模型,其最大的好处恰恰是可以解决二元类问题,目前在金融行业,基本都是使用Logistic回归来预判一个用户是否为好 ...
- linux100讲——71 if-else判断的使用
1.if-then-else语句: 语法: if [测试条件成立] then 执行相应的命令 else 测试条件不成立,执行相应的命令 fi 结束 示例:vim 9.sh #!/bin/bash #i ...