diff --git a/src/main/java/itn/com/cmm/util/PdfUtil.java b/src/main/java/itn/com/cmm/util/PdfUtil.java index bc205360..119925e8 100644 --- a/src/main/java/itn/com/cmm/util/PdfUtil.java +++ b/src/main/java/itn/com/cmm/util/PdfUtil.java @@ -1,12 +1,22 @@ package itn.com.cmm.util; +import java.awt.Image; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.util.UUID; +import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.FileUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.common.PDRectangle; +import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; + /** * * @author : 이호영 @@ -88,4 +98,53 @@ public final class PdfUtil { } + public static String makeImgPdf(String imgDir,String extsn) throws Exception { + PDDocument doc = new PDDocument(); + String uuid = UUID.randomUUID().toString(); + try { + File copy1 = new File(imgDir); + File copy2 = new File(imgDir + "." +extsn); + + + FileUtils.copyFile(copy1, copy2); + File imgFiles = new File(imgDir + "." +extsn); + Image img = ImageIO.read(imgFiles); + + PDPage page = new PDPage(PDRectangle.A4); + doc.addPage(page); + + PDImageXObject pdImage = PDImageXObject.createFromFile(imgFiles.toString(), doc); + int pageWidth = Math.round(page.getCropBox().getWidth()); + int pageHeight = Math.round(page.getCropBox().getHeight()); + + float imgRatio = 1; + if ( pageWidth < img.getWidth(null)) { + imgRatio = (float)img.getWidth(null) / (float)pageWidth; + } + + int imgWidth = Math.round(img.getWidth(null) / imgRatio); + int imgHeight = Math.round(img.getHeight(null) / imgRatio); + + int pageWidthPosition = (pageWidth - imgWidth) / 2; + int pageHeightPosition = (pageWidth - imgWidth) / 2; + + PDPageContentStream contents = new PDPageContentStream(doc, page); + contents.drawImage(pdImage, pageWidthPosition, pageHeightPosition, imgWidth, imgHeight); + contents.close(); + doc.save("/usr/local/tomcat/file/sht/pdf/" + uuid + ".pdf"); + + } catch (Exception e) { + System.out.println("Exception! : " + e.getMessage()); + } + + try { + doc.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + return "/usr/local/tomcat/file/sht/pdf/" + uuid + ".pdf"; + } + + } diff --git a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java index 8e0e13e4..d21ae61f 100644 --- a/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java +++ b/src/main/java/itn/let/mjo/msg/web/MjonMsgController.java @@ -1,5 +1,6 @@ package itn.let.mjo.msg.web; +import java.io.File; import java.io.OutputStream; import java.net.URL; import java.text.SimpleDateFormat; @@ -13,7 +14,6 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Random; -import java.util.stream.Collector; import java.util.stream.Collectors; import javax.annotation.Resource; @@ -52,6 +52,7 @@ import itn.com.cmm.service.EgovFileMngService; import itn.com.cmm.service.EgovFileMngUtil; import itn.com.cmm.service.FileVO; import itn.com.cmm.util.MJUtil; +import itn.com.cmm.util.PdfUtil; import itn.com.cmm.util.RedirectUrlMaker; import itn.com.cmm.util.StringUtil; import itn.com.utl.fcc.service.EgovStringUtil; @@ -158,6 +159,9 @@ public class MjonMsgController { @Resource(name = "egovMberCmpHstService") private EgovMberCmpHstService egovMberCmpHstService; + @Resource(name = "EgovFileMngService") + private EgovFileMngService fileService; + //배열 정의{"컬럼순차번호, 컬럼이름, 컬럼내용, 컬럼이름에 붙여야할 내용(엑셀코드양식다운로드시 필요)"} private String[][] sendMsgExcelValue ={ {"0" ,"번호" , "1" , "" }, @@ -5038,6 +5042,26 @@ public class MjonMsgController { return "/uss/ion/msg/weekendCsWork2"; } + + @RequestMapping(value = {"/uss/ion/msg/pdfView.do"}) + public String pdfView(FileVO fileVO, ModelMap model) throws Exception { + + FileVO fvo = fileService.selectFileInf(fileVO); + String path = ""; + + if(fvo != null) { + if("pdf".equals(fvo.getFileExtsn())) { + path = "/cmm/fms/FileDown.do?atchFileId="+ fvo.getAtchFileId() + "&fileSn=" + fvo.getFileSn(); + }else { + String storePath = fvo.getFileStreCours() + fvo.getStreFileNm(); + path = PdfUtil.makeImgPdf(storePath, fvo.getFileExtsn()); + } + } + + model.addAttribute("pdfPath", path); + + return "/uss/ion/msg/pdfView"; + } diff --git a/src/main/webapp/WEB-INF/decorators.xml b/src/main/webapp/WEB-INF/decorators.xml index ef4bbdb2..e4160c4b 100644 --- a/src/main/webapp/WEB-INF/decorators.xml +++ b/src/main/webapp/WEB-INF/decorators.xml @@ -151,6 +151,7 @@ /uss/ion/msg/weekendCsWork.do /uss/ion/msg/weekendCsWork2.do + /uss/ion/msg/pdfView.do diff --git a/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp new file mode 100644 index 00000000..e3dc303e --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/uss/ion/msg/pdfView.jsp @@ -0,0 +1,134 @@ +<%-- + Class Name : weekendCsWork.jsp + Description : 발신번호 리스트 조회 페이지 + Modification Information + + 수정일 수정자 수정내용 + ------- -------- --------------------------- + 2021.03.31 신명섭 최초 생성 + + Copyright (C) 2009 by ITN All right reserved. +--%> +<%@ page contentType="text/html; charset=utf-8"%> +<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%> +<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> +<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> +<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> +<%@ taglib prefix="ec" uri="/WEB-INF/tld/ecnet_tld.tld"%> +<% + response.setHeader("Cache-Control","no-store"); + response.setHeader("Pragma","no-cache"); + response.setDateHeader("Expires",0); + if (request.getProtocol().equals("HTTP/1.1")) response.setHeader("Cache-Control", "no-cache"); +%> + + + + + + + + + +
+ + +     + Page: / +
+ + + + \ No newline at end of file