一、如何制作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文件相关推荐

  1. Java使用Itext5与html模板生成pdf并支持下载

    Java使用Itext5与html模板生成pdf 文章目录 Java使用Itext5与html模板生成pdf 前言 一.引入依赖 二.相关使用说明 1.工具类 2.模板配置 3.模板的抽象类(定义了相 ...

  2. JAVA使用POI-TL通过Word模板生成Word文件

    技术背景 很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等. 用Java操作word文档,毫无疑问,当下最流行apache poi,对于po ...

  3. java pdf工具类_Java PDF工具类(一)| 使用 itextpdf 根据PDF模板生成PDF(文字和图片)...

    Java PDF工具类(一)| 使用 itextpdf 根据设置好的PDF模板填充PDF(文字和图片) 相关文章: Java PDF工具类(二)| 使用 wkhtmltox 实现 HTML转PDF(文 ...

  4. java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件

    Java 使用pdf 模板生成pdf文件 --制作流程 1.      使用工具 adobe acrobat dc.word 2015 2.      使用 word 繪制一個 3*5 的表格並保存, ...

  5. java 模板生成PDF文件 复选框勾选

    java 模板生成PDF文件 复选框勾选 // pdf填充时要有第三个参数s.setField("A", On, true);

  6. java导出pdf文件并下载_java根据模板生成pdf文件并导出

    1.首先需要依赖包:itext的jar包,我是maven项目,所以附上maven依赖 [html] view plain copy com.itextpdf itextpdf 5.5.10 [html ...

  7. Java根据模板生成pdf文件并导出

    原文地址:http://blog.csdn.net/TOP__ONE/article/details/65442390 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf ...

  8. java 字符串转pdf文件_java中根据模板生成pdf文件

    原标题:java中根据模板生成pdf文件 阅读目录 简介 业务需求 引入jar包 pdf模板文件与方法参数 代码部分 总结归纳 回到顶部 简介 本文使用java引入apach提供的pdf操作工具生成p ...

  9. java根据模板生成pdf文件并导出(iText)

    java根据模板生成pdf文件并导出 首先你的制作一个pdf模板: 1.先用word做出模板界面 2.文件另存为pdf格式文件 3.通过Adobe Acrobat pro软件打开刚刚用word转换成的 ...

  10. java按模板生成pdf_java中根据模板生成pdf文件

    简介 本文使用java引入apache提供的pdf操作工具生成pdf文件,主要是根据需求开发了一个util类,记录一下学习和开发过程. 业务需求 因为业务需要,对于不同的用户要生成一个不同的pdf文件 ...

最新文章

  1. java tabpanel_java cs tab点击切换标签的实现 panel
  2. page cache 与free
  3. ClickHouse 副本协同原理:ReplicatedMergeTree引擎
  4. php开源问答_PHP基础知识能力问答
  5. 第8篇:Flowable快速工作流脚手架Jsite_请假实战_查看历史任务
  6. springcloud hystrix入门简介(二)
  7. java web 断点上传_使用WebUploader实现分片断点上传文件功能(二)
  8. AI 芯片崛起!FPGA 工程师的核心竞争力在哪里?
  9. android 内存检测开源库 翻译,开源 | 哈佛大学NLP组开源神经机器翻译工具包OpenNMT:已达到生产可用水平...
  10. Windows10配置使用极点五笔输入法
  11. OSGEarth基于经纬度获取高程数据
  12. 32bit 天堂2脚本修改资料大全【客户端+服务端】
  13. NRF24L01故障排查
  14. win7变成xp风格了怎么改回_win7怎么变成xp界面|win7系统变成xp界面主题的方法
  15. MyBatis中mapper.xml其属性resultSets的作用及研究
  16. 基于SSM实现的简易员工管理系统(基于阿里云的网站上线篇)
  17. spss对数据进行聚类分析(系统聚类法和k-均值聚类法)和判别分析(费歇尔和贝叶斯)。
  18. pytorch学习之如何画损失函数曲线图
  19. PHP API接口鉴权
  20. new Date() 日期格式的转换

热门文章

  1. java电商网站源码_java 的电商系统的完整源码+文档
  2. Access应用实例——图书借阅管理系统
  3. 易语言静态连接器提取_正确易语言链接器link.exe,使易语言支持静态编译
  4. 【交叉/综合/新兴】 2019年-中国计算机学会推荐国际学术会议和期刊目录(十)
  5. 茗创:近红外数据处理业务
  6. Retinex算法,图像色彩增强之python实现——MSR,MSRCR,MSRCP,autoMSRCR
  7. 智慧交通day02-车流量检测实现13:基于虚拟线圈法的车辆统计+视频中的车流量统计原理解析
  8. foobar2000播放dff格式音乐的解决办法
  9. Adodb CS3(DW、FW、PS、FLASH)安装序列号
  10. 惠普打印机驱动服务器系统,在打印机服务器(系统WIN2003)上安装了HP5100 打印机,客户机系统WIN7 64位,现没法添加HP5100的驱动...