日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java实现根据pdf文件模板生成pdf文件

發布時間:2023/12/10 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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文件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。