/**
* 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,俗称扣模板的更多相关文章

  1. 操作表单域中的value值

    HTML <form action=""> <input type="radio" name="sex" value=&q ...

  2. Java 创建、填充PDF表单域

    表单域,可以按用途分为多种不同的类型,常见的有文本框.多行文本框.密码框.隐藏域.复选框.单选框和下拉选择框等,目的是用于采集用户的输入或选择的数据.下面的示例中,将分享通过Java编程在PDF中添加 ...

  3. ASP.NET 开源导入导出库Magicodes.IE 导出Pdf教程

    基础教程之导出Pdf收据 说明 本教程主要说明如何使用Magicodes.IE.Pdf完成Pdf收据导出 要点 导出PDF数据 自定义PDF模板 导出单据 如何批量导出单据 导出特性 PdfExpor ...

  4. java利用itext导出pdf

    项目中有一功能是导出历史记录,可以导出pdf和excel,这里先说导出pdf.在网上查可以用那些方式导出pdf,用itext比较多广泛. 导出pdf可以使用两种方式,一是可以根据已有的pdf模板,进行 ...

  5. Java导出Pdf格式表单

    前言   作为开发人员,工作中难免会遇到复杂表单的导出,接下来介绍一种通过Java利用模板便捷导出Pdf表单的方式 模拟需求   需求:按照下面格式导出pdf格式的学生成绩单 准备工作 Excel软件 ...

  6. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  7. Itext导出PDF,word,图片案例

    iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...

  8. java根据模板导出PDF(利用itext)

    一.制作模板     1.下载Adobe Acrobat 9 Pro软件(pdf编辑器),制作模板必须使用该工具. 2.下载itextpdf-5.5.5.jar.itext-asian-5.2.0.j ...

  9. java动态导出PDF(利用itext)

    项目基于ssm框架,使用itext动态导出pdf文件: 1.引入两个jar包:itextpdf-5.5.5.jar.itext-asian-5.2.0.jar 说明: 1.itextpdf-5.5.5 ...

随机推荐

  1. cra

    const paths = require('react-scripts/config/paths'); paths.appBuild = path.join(path.dirname(paths.a ...

  2. CSS字体连写及外观属性

    一.font:字体连写 使用font属性时,必须按以下语法格式中的顺序书写,不能更换顺序,各个属性以空格隔开.注意:其中不需要设置的属性可以省略(取默认值),但必须保留font-size和font-f ...

  3. MySQL概述及入门(一)

    MySql概述及入门(一) 什么是MySQL?    MySQL是当今主流的关系型数据库管理系统(记录是有行有列的数据库) , 可以与Oracle 和SQL Server 竞争 , 是最好RDBMS( ...

  4. stm32f103vct6外扩sram芯片

    STM32F103是一款高性价比.多功能的单片机,配备常用的32位单片机片外资源,基于ARM Cortex-M3的32位处理器芯片,片内具有256KB FLASH,48KB RAM ( 片上集成12B ...

  5. 【python基础语法】第4天作业练习题

    """ 有6道题(通过字典来操作): 1. 某比赛需要获取你的个人信息,设计一个程序, 运行时分别提醒输入 姓名.性别.年龄 ,输入完了,请将数据存储为一个字典, 2.数 ...

  6. requests库爬取需要登录的网站

    #!usr/bin/env python #-*- coding:utf-8 _*- """ @author:lenovo @file: 登录人人网.py @time: ...

  7. 如何将旧Mac的数据迁移到新的MacBook Pro?

    最新版的MacBook Pro已经上市,具有超凡魅力的Touch Bar开创了一个新时代.苗条的设计和华丽的显示效果也起到了推动运动的作用……!将数据从旧Mac传输到新Mac不再是一件漫长的事.您只需 ...

  8. Uva1639(概率期望/对数处理避免丢失精度)

    Uva1639 题意: 有两个盒子各有n个糖果(n<=200000),每天随机选择一个:选第一个盒子的概率是p(0 ≤ p ≤ 1),第二个盒子的概率为1-p,然后吃掉其中的一颗.直到有一天,随 ...

  9. Callablestatement与JavaBean及其实例

    一. Callablestatement:调用 数据库中的存储过程.存储函数 connection.prepareCall(参数:存储过程/存储函数名)参数格式:存储过程:(无返回值return,用O ...

  10. SOA分析浅谈

    根据百度定义:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来.接口是采用中立的方式进行定义的,它应该独立于实现服 ...