From 71aa4e020f2d543907951daafcd168312eb3ec4e Mon Sep 17 00:00:00 2001 From: zengwh <81383286@qq.com> Date: Tue, 25 Aug 2020 09:05:28 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96pdf=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/emr/util/Jpg2PdfUtil.java | 148 ++---------------- src/main/resources/config/config.properties | 2 +- src/main/resources/log4j.properties | 15 +- .../static/js/statistics/recordStatistics.js | 15 +- 4 files changed, 33 insertions(+), 147 deletions(-) diff --git a/src/main/java/com/emr/util/Jpg2PdfUtil.java b/src/main/java/com/emr/util/Jpg2PdfUtil.java index f8d2264..de4042c 100644 --- a/src/main/java/com/emr/util/Jpg2PdfUtil.java +++ b/src/main/java/com/emr/util/Jpg2PdfUtil.java @@ -30,95 +30,6 @@ import java.util.List; * @Version: 1.0 */ public class Jpg2PdfUtil { - static Logger logger = LoggerFactory.getLogger(Jpg2PdfUtil.class); - public static void imageToPdf(HttpServletResponse response, List filePaths, String pdfName) throws Exception{ - // 实例化图牿 - Image image = null; - pdfName = java.net.URLEncoder.encode(pdfName, "UTF-8"); - Document doc = openDocument(response, pdfName); - try { - for (String filePath : filePaths) { - File file1 = new File(filePath); - if(file1.exists()){ - if (file1.getName().endsWith(".tif") || file1.getName().endsWith(".tiff")) { - Object localObject1 = null; - Object localObject2 = null; - URL paramURL = Utilities.toURL(filePath); - try { - if (paramURL.getProtocol().equals("file")) { - localObject2 = paramURL.getFile(); - localObject2 = Utilities - .unEscapeURL((String) localObject2); - localObject1 = new RandomAccessFileOrArray( - (String) localObject2); - } else { - localObject1 = new RandomAccessFileOrArray(paramURL); - } - - int pageNums = TiffImage - .getNumberOfPages((RandomAccessFileOrArray) localObject1); - if (pageNums > 0) { - for (int i = 1; i <= pageNums; i++) { - localObject2 = TiffImage.getTiffImage( - (RandomAccessFileOrArray) localObject1, i); - image = (Image) localObject2; - } - } - if (localObject1 != null) { - ((RandomAccessFileOrArray) localObject1).close(); - } - } finally { - if (localObject1 != null) { - ((RandomAccessFileOrArray) localObject1).close(); - } - } - }else if (file1.getName().endsWith(".png") - || file1.getName().endsWith(".jpg") - || file1.getName().endsWith(".gif") - || file1.getName().endsWith(".jpeg") - ) { - // 实例化图牿 - image = Image.getInstance(filePath); - } - // 获得图片的高庿 - float heigth = image.getHeight(); - float width = image.getWidth(); - // 合理压缩,h>w,按w压缩,否则按w压缩 - int percent = getPercent(heigth, width); - - // 设置图片居中显示 - //image.setAlignment(Image.MIDDLE); - image.setAlignment(Image.ALIGN_CENTER); - //image.scaleAbsolute(500, 400); - // 按百分比显示图片的比便 - if (width > 1024 || heigth > 786) { - image.scalePercent(percent+5); - } - doc.add(image); - } - } - } catch (Exception e) { - e.printStackTrace(); - } finally { - if (doc.isOpen()) { - doc.close(); - } - } - } - - private static Document openDocument(HttpServletResponse response,String pdfName) throws Exception{ - Document doc = new Document(); - response.reset(); - response.setCharacterEncoding("utf-8"); - response.setContentType("application/pdf"); // word格式 - response.setHeader("Content-Disposition", "attachment; filename=" + pdfName+ "("+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) +").pdf"); - // 定义输出文件的位罿 - PdfWriter.getInstance(doc,response.getOutputStream()); - // 开启文桿 - doc.open(); - return doc; - } - /** * 利用itext打开pdf文档 */ @@ -162,25 +73,23 @@ public class Jpg2PdfUtil { if(!files.isEmpty()){ // pdf合并工具类 Document document = null; - ByteArrayOutputStream bos = null; + ByteArrayOutputStream bos = new ByteArrayOutputStream(); PdfCopy copy = null; - PdfReader reader = null; - PdfReader pdfReader = null; try { response.reset(); document = new Document(new PdfReader(files.get(0)).getPageSize(1)); copy = new PdfCopy(document,response.getOutputStream()); document.open(); - bos = new ByteArrayOutputStream(); for (String file : files) { bos.flush(); + PdfReader reader = new PdfReader(file); + PdfReader pdfReader = null; //判断是否加水印 if (StringUtils.isNotBlank(waterMarkName)) { - setWatermark(bos, file, waterMarkName, null); + setWatermark(bos, reader, waterMarkName, null); + pdfReader = new PdfReader(bos.toByteArray()); } - reader = new PdfReader(file); int n = reader.getNumberOfPages(); - pdfReader = new PdfReader(bos.toByteArray()); for (int j = 1; j <= n; j++) { document.newPage(); PdfImportedPage page = null; @@ -191,6 +100,10 @@ public class Jpg2PdfUtil { } copy.addPage(page); } + if(pdfReader != null){ + pdfReader.close(); + } + reader.close(); } }catch (Exception e){ e.printStackTrace(); @@ -198,19 +111,11 @@ public class Jpg2PdfUtil { if(null != copy){ copy.close(); } - if(pdfReader != null){ - pdfReader.close(); - } - if(null != reader){ - reader.close(); - } - if(null != bos){ - try { - bos.flush(); - bos.close(); - }catch (Exception e){ - e.printStackTrace(); - } + try { + bos.flush(); + bos.close(); + }catch (Exception e){ + e.printStackTrace(); } if(null != document){ document.close(); @@ -221,11 +126,9 @@ public class Jpg2PdfUtil { //加水印 - private static void setWatermark(ByteArrayOutputStream bos, String input, String waterMarkName, String imgPath){ - PdfReader reader = null; + public static void setWatermark(ByteArrayOutputStream bos, PdfReader reader, String waterMarkName, String imgPath){ PdfStamper stamper = null; try { - reader = new PdfReader(input); stamper = new PdfStamper(reader, bos); int total = reader.getNumberOfPages() + 1; PdfContentByte content; @@ -235,7 +138,6 @@ public class Jpg2PdfUtil { content = stamper.getOverContent(i);// 在内容上方加水印 //加文字水印 if(StringUtils.isNotBlank(waterMarkName)) { - gs.setFillOpacity(0.3f); gs.setStrokeOpacity(0.3f); content.setGState(gs); @@ -269,29 +171,9 @@ public class Jpg2PdfUtil { try { assert stamper != null; stamper.close(); - reader.close(); } catch (DocumentException | IOException e) { e.printStackTrace(); } } - } - /** - * 在不改变图片形状的同时,判断,如果h>w,则按h压缩,否则在w>h或w=h的情况下,按宽度压缩 - * @param h - * @param w - * @return - */ - private static int getPercent(float h, float w) { - int p = 0; - float p2 = 0.0f; - if (h > w) { - p2 = 210 / h * 279; - } else { - p2 = 210 / w * 279; - } - p = Math.round(p2); - return p; - } - } diff --git a/src/main/resources/config/config.properties b/src/main/resources/config/config.properties index 9a983f8..c400a8b 100644 --- a/src/main/resources/config/config.properties +++ b/src/main/resources/config/config.properties @@ -16,7 +16,7 @@ powerUrl=${POWER_URLHEAD}/font/getMenusByUserIdAndSysFlag #\u6821\u9A8C\u5B8C\u6574\u6027IP CHECKSUCCESS_IP = ${POWER_IP} #\u6821\u9A8C\u5B8C\u6574\u6027\u7AEF\u53E3 -CHECKSUCCESS_PORT = 8888 +CHECKSUCCESS_PORT = ${POWER_PORT} HomepageDictionary=http://${CHECKSUCCESS_IP}:${CHECKSUCCESS_PORT}/filing/services/HomepageDictionary?wsdl HomepageMethod=CheckData diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 724ba4d..caf5683 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -1,4 +1,4 @@ -log4j.logger.myLog=debug,myLog +log4j.rootLogger=info,myLog,errorMsg log4j.appender.myLog=org.apache.log4j.DailyRollingFileAppender log4j.appender.myLog.File=D:\\logs\\emr_medical_record\\info\\info_log log4j.appender.myLog.DatePattern=-yyyy-MM-dd'.log' @@ -7,17 +7,20 @@ log4j.appender.myLog.Threshold = INFO log4j.appender.myLog.layout=org.apache.log4j.PatternLayout log4j.appender.myLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n -log4j.logger.errorMsg=error,errorMsg log4j.appender.errorMsg=org.apache.log4j.DailyRollingFileAppender log4j.appender.errorMsg.File=D:\\logs\\emr_medical_record\\error\\error_log log4j.appender.errorMsg.DatePattern=-yyyy-MM-dd'.log' log4j.appender.errorMsg.Append = true -log4j.appender.errorMsg.Threshold = error +log4j.appender.errorMsg.Threshold = error log4j.appender.errorMsg.layout=org.apache.log4j.PatternLayout log4j.appender.errorMsg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n #Console sql #log4j.rootLogger=debug,myLog,errorMsg,CONSOLE -#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender -#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout -#log4j.appender.CONSOLE.layout.ConversionPattern =%d %-5p [%c{5}] - %m%n +log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender +log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout +log4j.appender.CONSOLE.layout.ConversionPattern =%d %-5p [%c{5}] - %m%n + +log4j.logger.com.emr=debug +log4j.logger.com.alibaba=error +log4j.logger.org=error diff --git a/src/main/webapp/static/js/statistics/recordStatistics.js b/src/main/webapp/static/js/statistics/recordStatistics.js index b970ce0..cc9010f 100644 --- a/src/main/webapp/static/js/statistics/recordStatistics.js +++ b/src/main/webapp/static/js/statistics/recordStatistics.js @@ -15,7 +15,7 @@ $(function(){ initTable1(); break; case '3': - initTable2(getDeptName()); + initTable2(getDeptName(),'table2'); break; } }) @@ -216,18 +216,19 @@ function initTable1() { }, //展开详情事件 onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件 + var deptName = row.deptName; + var tableId = 'table_'+deptName; var html = '
\n' + - '
\n' + + '
\n' + '
'; $detail.html(html); - var deptName = row.deptName; - initTable2(deptName); + initTable2(deptName,tableId); } }); } //第三层,根据科室查询病患详情 -function initTable2(deptName) { - $("#table2").bootstrapTable({ // 对应table标签的id +function initTable2(deptName,tableId) { + $("#"+tableId).bootstrapTable({ // 对应table标签的id url: path+"/statistics/getRecordStatisticsByDeptName", // 获取表格数据的url cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true striped: true, //表格显示条纹,默认为false @@ -384,7 +385,7 @@ $('#searchBtnStatistics').click(function () { }else if(level == '2') { $("#table1").bootstrapTable("refreshOptions", {pageNumber: 1}); }else if(level == '3') { - $("#table2").bootstrapTable("refreshOptions", {pageNumber: 1}); + $(".table2").bootstrapTable("refreshOptions", {pageNumber: 1}); } } else { toastr.warning("正在查询,请稍等...");