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 ...
随机推荐
- npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
Mac 权限不够 前面加sudo 然后输入密码
- Mybaits(9)MyBatis级联-2
一.鉴别器和一对多级联 1.完善体检表,分为男雇员体检和女雇员体检表 (1)持久层dao编写 package com.xhbjava.dao; import com.xhbjava.domain.Ma ...
- XmlDocument vs XElement
var xmlstr = @"<xml> <AppId>some_appid</AppId> <CreateTime>1413192605&l ...
- jQuery---事件的执行顺序
事件的执行顺序 // 1 这个是p自己注册的事件(简单事件) $("p").on("click", function () { alert("呵呵哒& ...
- #6499. 「雅礼集训 2018 Day2」颜色 [分块,倍增,bitset]
bitset压位,因为是颜色数,直接倍增,重合部分不管,没了. // powered by c++11 // by Isaunoya #include <bits/stdc++.h> #d ...
- Wannafly Winter Camp 2020 Day 6G 单调栈 - 贪心
对于排列 \(p\),它的单调栈 \(f\) 定义为,\(f_i\) 是以 \(p_i\) 结尾的最长上升子序列的长度 先给定 \(f\) 中一些位置的值,求字典序最小的 \(p\) 使得它满足这些值 ...
- 深入浅出Mybatis系列十-SQL执行流程分析(源码篇)
注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 最近太忙了,一直没时间继续更新博客,今天忙里偷闲继续我的Mybatis学习之旅.在前 ...
- 剑指offer-面试题31-栈的压入弹出序列-栈
#include<iostream> #include<string.h> #include<algorithm> #include<cmath> #i ...
- 2020 CCPC Wannafly Winter Camp Day1 Div.1& F
#include<bits/stdc++.h> #define forn(i, n) for (int i = 0; i < int(n); i++) #define fore(i, ...
- FHQTreap刷题记录
分裂:如图,按值分裂,u比k大则切黄色的一