首页 技术 正文
技术 2022年11月21日
0 收藏 309 点赞 4,558 浏览 2969 个字

1.准备工作

(1)Adobe Acrobat pro软件:用来制作导出模板
(2)itext的jar包

2.开始制作pdf模板

(1)先用word做出模板界面
Java利用模板生成pdf并导出
(2)文件另存为pdf格式文件
Java利用模板生成pdf并导出
(3)通过Adobe Acrobat pro软件打开刚刚用word转换成的pdf文件
Java利用模板生成pdf并导出
(4)点击右边的”准备表单”按钮,选择”测试.pdf”选择开始(选择工具栏里面添加文本域,可以选择在任意位置添加你想要的文本域。在文本域属性框可以设置文本的属性,例如文本的名称、字体大小、位置等)
Java利用模板生成pdf并导出
Java利用模板生成pdf并导出
Java利用模板生成pdf并导出
(5)做完上面的工作后,直接”另存为”将pdf存储就可以
Java利用模板生成pdf并导出
到此模板就制作完成啦!接下来就开始写代码啦

3.开始导出pdf

(1)pdf工具类PdfUtil.java

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;import javax.servlet.ServletOutputStream;import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.pdf.AcroFields;
import com.itextpdf.text.pdf.PdfCopy;
import com.itextpdf.text.pdf.PdfImportedPage;
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.PdfStamper;
public class PdfUtil {
/**
*
* @param o 写入的数据
* @param out 自定义保存pdf的文件流
* @param templatePath pdf模板路径
*/
// 利用模板生成pdf
public void fillTemplate(Map<String,Object> o,ServletOutputStream out,String templatePath) {
PdfReader reader;
ByteArrayOutputStream bos;
PdfStamper stamper;
try {
reader = new PdfReader(templatePath);// 读取pdf模板
bos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, bos);
AcroFields form = stamper.getAcroFields(); java.util.Iterator<String> it = form.getFields().keySet().iterator();
while (it.hasNext()) {
String name = it.next().toString();
System.out.println(name);
String value = o.get(name)!=null?o.get(name).toString():null;
form.setField(name,value);
}
stamper.setFormFlattening(true);// 如果为false那么生成的PDF文件还能编辑,一定要设为true
stamper.close(); Document doc = new Document();
PdfCopy copy = new PdfCopy(doc, out);
doc.open();
PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);
copy.addPage(importPage);
doc.close(); } catch (IOException e) {
System.out.println(e);
} catch (DocumentException e) {
System.out.println(e);
}
} }

(2)action文件里的方法调用PdfUtil生成pdf并导出

public String  downloadFile(){
String json = ServletActionContext.getRequest().getParameter("json");
try {
json = java.net.URLDecoder.decode(json,"UTF-8"); //解码
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JSONObject jsonObject = JSONObject.fromObject(json);
Map<String, Object> mapJson = JSONObject.fromObject(jsonObject);
HttpServletResponse response = ServletActionContext.getResponse();
// 设置response参数,可以打开下载页面
response.reset();
response.setCharacterEncoding("UTF-8");
// 定义输出类型
response.setContentType("application/PDF;charset=utf-8");
response.setHeader("Content-Disposition", "attachment; filename=" + "assessment.pdf");
try {
ServletOutputStream out = response.getOutputStream();
PdfUtil pdf = new PdfUtil();
pdf.fillTemplate(mapJson ,out,"模板pdf存放的路径");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

(3)js发起调用(如果用Ajax发起的调用就无法打开下载页面)

var json = {};
json.studyNum = "123456789";
json.name = "TOP__ONE";
json.sex = "男";
json.birthday = "1991-01-01";
json.id = "130222111133338888";
json.addr = "河北省保定市";
var strJson = encodeURIComponent(encodeURIComponent(JSON.stringify(json))); //编码
window.open( "../test/downloadFile.action?json="+strJson);

(4)运行结果如下
Java利用模板生成pdf并导出

参考博客地址:https://blog.csdn.net/top__one/article/details/65442390

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,487
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,486
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,126
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,287