java实现根据pdf文件模板生成pdf文件
一、如何制作pdf模板
1.首先创建template.doc
2.根据doc文件制作pdf模板
3.将doc文件输出为pdf
文件->输出为pdf
4.输出的pdf文件
5.使用Adobe Acrobat DC打开template.pdf
6.填充文字及创作表单
创作表单->添加“文本”域
创作表单->编辑“表格”
*填充的字段名(比如对象Table的属性为name,这里名称后面一列的单元格填充name)
7.模板制作完毕
二、java生成pdf文件
1.java代码
PdfFileBlh.java:@SuppressWarnings("unchecked")
public void exportPdfFile(HttpServletRequest request, HttpServletResponse response) throws IOException {//1.获取数据
// String jsonString = getRequestJsonString(request);String jsonString = request.getParameter("jsonString");/*String jsonString = "{\r\n" + " \"hospitalId\":\"14064\",\r\n" + " \"hospitalName\":\"揭阳市人民医院\",\r\n" + " \"name\":\"周虎\",\r\n" + " \"gender\":\"男\",\r\n" + " \"age\":\"26岁\",\r\n" + " \"patNo\":\"0001278568\",\r\n" + " \"clinic\":\"全科医学科简易门诊\",\r\n" + " \"bedNo\":\"16床\",\r\n" + " \"specimen\":\"咽拭子\",\r\n" + " \"repNo\":\"110254767\",\r\n" + " \"serialNo\":\"0\",\r\n" + " \"doctor\":\"核酸检测号\",\r\n" + " \"applicationTime\":\"2021-02-18 15:17\",\r\n" + " \"advName\":\"新型冠状病毒核酸RNA检测(自费)\",\r\n" + " \"idType\":\"身份证\",\r\n" + " \"idNo\":\"EC3263698\",\r\n" + " \"dateOfCollection\":\"2021-02-18 15:30\",\r\n" + " \"dateOfReceipt\":\"2021-02-19 11:13\",\r\n" + " \"specimenCollector\":\"黄敏华\",\r\n" + " \"specimenReceiver\":\"钟乔华\",\r\n" + " \"dateOfInspection\":\"2021-02-19 11:15\",\r\n" + " \"dateOfReport\":\"2021-02-19 11:15\",\r\n" + " \"reportedBy\":\"陈舒兰\",\r\n" + " \"inspectedBy\":\"钟乔华\",\r\n" + " \"resultList\":[\r\n" + " {\r\n" + " \"testItems\":\"2019新型冠状病毒核酸检测\",\r\n" + " \"result\":\"阴性(-)\",\r\n" + " \"refRange\":\"阴性(-)\",\r\n" + " \"method\":\"RT-PCR\"\r\n" + " },\r\n" + " {\r\n" + " \"testItems\":\"Nucleic Acid Test For SARA-Cov-2\",\r\n" + " \"result\":\"Negative(-)\",\r\n" + " \"refRange\":\"Negative(-)\",\r\n" + " \"method\":\"RT-PCR\"\r\n" + " },\r\n" + " {\r\n" + " \"testItems\":\"2019-nCov ORFlab基因\",\r\n" + " \"result\":\"阴性Negative(-)\",\r\n" + " \"refRange\":\"阴性Negative(-)\",\r\n" + " \"method\":\"RT-PCR\"\r\n" + " },\r\n" + " {\r\n" + " \"testItems\":\"2019-nCov N基因\",\r\n" + " \"result\":\"阴性Negative(-)\",\r\n" + " \"refRange\":\"阴性Negative(-)\",\r\n" + " \"method\":\"RT-PCR\"\r\n" + " }\r\n" + " ]\r\n" + "}";*/System.out.println("======jsonString======"+jsonString);if(StringUtils.isNotBlank(jsonString)) {//2.处理数据Map<String, Object> data = JsonUtils.toObject(jsonString, Map.class);//3.根据医院Id获取pdf模板文件String hospitalId = (String) data.get("hospitalId");String hospitalName = (String) data.get("hospitalName");String templatePath = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/template/template_" + hospitalId + ".pdf");String fontPath = request.getSession().getServletContext().getRealPath("/WEB-INF/classes/template/simsun.ttc");System.out.println("======templatePath======"+templatePath);//4.设置响应头信息response.setContentType("multipart/form-data");response.setHeader("Content-Disposition","attachment;fileName="+new String((hospitalName + "检验报告单_").getBytes("GBK"), "ISO-8859-1") + DateUtils.formatDate(new Date(), "yyyyMMddHHmmss") + ".pdf");//5.指定解析器ServletOutputStream os = null;PdfStamper ps = null;PdfReader reader = null;Document doc = null;try {os = response.getOutputStream();// 6.读入pdf表单reader = new PdfReader(templatePath);// 7.根据表单生成一个新的pdfps = new PdfStamper(reader, os);doc = new Document();// 8.获取pdf表单AcroFields form = ps.getAcroFields();// 9.给表单添加中文字体 。不设置的话,中文可能无法显示BaseFont bf = BaseFont.createFont(fontPath+",1", BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);form.addSubstitutionFont(bf);// 10.获取到明细List<Map<String,Object>> resultList = (List<Map<String, Object>>) data.get("resultList");data.remove("resultList");// 11.遍历data 给pdf表单表格赋值for (String key : data.keySet()) {String value = (String) data.get(key);form.setField(key, value);}// 12.处理检验明细if(resultList!=null && resultList.size()>0) {String testItems="\r\n";String result="\r\n";String refRange="\r\n";String method="\r\n";for(Map<String,Object> resultMap:resultList) {testItems+=resultMap.get("testItems")+"\r\n\r\n";result+=resultMap.get("result")+"\r\n\r\n";refRange+=resultMap.get("refRange")+"\r\n\r\n";method+=resultMap.get("method")+"\r\n\r\n";}form.setField("testItems", testItems);form.setField("result", result);form.setField("refRange", refRange);form.setField("method", method);}ps.setFormFlattening(true);ps.close();doc.open();doc.close();System.out.println("===============PDF导出成功=============");} catch (Exception e) {e.printStackTrace();} finally {try {os.close();} catch (Exception e) {e.printStackTrace();}}}}public static String getRequestJsonString(HttpServletRequest request)throws IOException {String submitMehtod = request.getMethod();// GETif (submitMehtod.equals("GET")) {return new String(request.getQueryString().getBytes("iso-8859-1"),"utf-8").replaceAll("%22", "\"");// POST} else {return getRequestPostStr(request);}}public static byte[] getRequestPostBytes(HttpServletRequest request)throws IOException {int contentLength = request.getContentLength();if(contentLength<0){return null;}byte buffer[] = new byte[contentLength];for (int i = 0; i < contentLength;) {int readlen = request.getInputStream().read(buffer, i,contentLength - i);if (readlen == -1) {break;}i += readlen;}return buffer;}public static String getRequestPostStr(HttpServletRequest request)throws IOException {byte buffer[] = getRequestPostBytes(request);String charEncoding = request.getCharacterEncoding();if (charEncoding == null) {charEncoding = "UTF-8";}return new String(buffer, charEncoding);}PdfFileController.java:@Controller
@RequestMapping("/pdfFile")
public class PdfFileController {@Resourceprivate PdfFileBlh blh;@RequestMapping(params="BLHMI=exportPdfFile")public void exportNoEndFormList(HttpServletRequest request, HttpServletResponse response) throws IOException {blh.exportPdfFile(request,response);}
}
2.html代码:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><!DOCTYPE html>
<html lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>生成PDF文件</title><jsp:include page="/WEB-INF/jsp/common/scriptInc.jsp"></jsp:include><jsp:include page="/WEB-INF/jsp/common/styleInc.jsp"></jsp:include><script type="text/javascript">function exportPdfFile(){$("#downPdfFileForm").submit();}</script></head><body><div class=""><div class=""><div id="handout_wrap_inner"><form id="downPdfFileForm" action="http://localhost:8080/demo/pdfFile?BLHMI=exportPdfFile" method="post"><input name="jsonString" value='{"hospitalId":"14064","hospitalName":"揭阳市人民医院","name":"张三","gender":"男","age":"26岁","patNo":"0001278568","clinic":"全科医学科简易门诊","bedNo":"16床","specimen":"咽拭子","repNo":"110254767","serialNo":"0","doctor":"核酸检测号","applicationTime":"2021-02-18 15:17","advName":"新型冠状病毒核酸RNA检测(自费)","idType":"身份证","idNo":"EC3263698","dateOfCollection":"2021-02-18 15:30","dateOfReceipt":"2021-02-19 11:13","specimenCollector":"黄敏华","specimenReceiver":"钟乔华","dateOfInspection":"2021-02-19 11:15","dateOfReport":"2021-02-19 11:15","reportedBy":"陈舒兰","inspectedBy":"钟乔华","resultList":[{ "testItems":"2019新型冠状病毒核酸检测", "result":"阴性(-)", "refRange":"阴性(-)", "method":"RT-PCR"},{ "testItems":"Nucleic Acid Test For SARA-Cov-2", "result":"Negative(-)", "refRange":"Negative(-)", "method":"RT-PCR"},{ "testItems":"2019-nCov ORFlab基因", "result":"阴性Negative(-)", "refRange":"阴性Negative(-)", "method":"RT-PCR"},{ "testItems":"2019-nCov N基因", "result":"阴性Negative(-)", "refRange":"阴性Negative(-)", "method":"RT-PCR"}]}'/></form><a href="javascript:void(0);" onclick="exportPdfFile()">下载</a></div></div></div></body>
</html>
java实现根据pdf文件模板生成pdf文件相关推荐
- Java使用Itext5与html模板生成pdf并支持下载
Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...
- JAVA使用POI-TL通过Word模板生成Word文件
技术背景 很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等. 用Java操作word文档,毫无疑问,当下最流行apache poi,对于po ...
- java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...
Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...
- java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
Java 使用pdf 模板生成pdf文件 --制作流程 1. 使用工具 adobe acrobat dc.word 2015 2. 使用 word 繪制一個 3*5 的表格並保存, ...
- java 模板生成PDF文件 复选框勾选
java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);
- java导出pdf文件并下载_java根据模板生成pdf文件并导出
1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy com.itextpdf itextpdf 5.5.10 [html ...
- Java根据模板生成pdf文件并导出
原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...
- java 字符串转pdf文件_java中根据模板生成pdf文件
原标题:java中根据模板生成pdf文件 阅读目录 简介 业务需求 引入jar包 pdf模板文件与方法参数 代码部分 总结归纳 回到顶部 简介 本文使用java引入apach提供的pdf操作工具生成p ...
- java根据模板生成pdf文件并导出(iText)
java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...
- java按模板生成pdf_java中根据模板生成pdf文件
简介 本文使用java引入apache提供的pdf操作工具生成pdf文件,主要是根据需求开发了一个util类,记录一下学习和开发过程. 业务需求 因为业务需要,对于不同的用户要生成一个不同的pdf文件 ...
最新文章
- java tabpanel_java cs tab点击切换标签的实现 panel
- page cache 与free
- ClickHouse 副本协同原理:ReplicatedMergeTree引擎
- php开源问答_PHP基础知识能力问答
- 第8篇:Flowable快速工作流脚手架Jsite_请假实战_查看历史任务
- springcloud hystrix入门简介(二)
- java web 断点上传_使用WebUploader实现分片断点上传文件功能(二)
- AI 芯片崛起!FPGA 工程师的核心竞争力在哪里?
- android 内存检测开源库 翻译,开源 | 哈佛大学NLP组开源神经机器翻译工具包OpenNMT:已达到生产可用水平...
- Windows10配置使用极点五笔输入法
- OSGEarth基于经纬度获取高程数据
- 32bit 天堂2脚本修改资料大全【客户端+服务端】
- NRF24L01故障排查
- win7变成xp风格了怎么改回_win7怎么变成xp界面|win7系统变成xp界面主题的方法
- MyBatis中mapper.xml其属性resultSets的作用及研究
- 基于SSM实现的简易员工管理系统(基于阿里云的网站上线篇)
- spss对数据进行聚类分析(系统聚类法和k-均值聚类法)和判别分析(费歇尔和贝叶斯)。
- pytorch学习之如何画损失函数曲线图
- PHP API接口鉴权
- new Date() 日期格式的转换
热门文章
- java电商网站源码_java 的电商系统的完整源码+文档
- Access应用实例——图书借阅管理系统
- 易语言静态连接器提取_正确易语言链接器link.exe,使易语言支持静态编译
- 【交叉/综合/新兴】 2019年-中国计算机学会推荐国际学术会议和期刊目录(十)
- 茗创:近红外数据处理业务
- Retinex算法,图像色彩增强之python实现——MSR,MSRCR,MSRCP,autoMSRCR
- 智慧交通day02-车流量检测实现13:基于虚拟线圈法的车辆统计+视频中的车流量统计原理解析
- foobar2000播放dff格式音乐的解决办法
- Adodb CS3(DW、FW、PS、FLASH)安装序列号
- 惠普打印机驱动服务器系统,在打印机服务器(系统WIN2003)上安装了HP5100 打印机,客户机系统WIN7 64位,现没法添加HP5100的驱动...