diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java index bbc9384..46bf3de 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/controller/BasFlightController.java @@ -408,9 +408,11 @@ public class BasFlightController { } @GetMapping("/laanc-pdf/download") - public void downloadPDF(int fileSno, HttpServletResponse response){ + @Tag(name = "비행계획서", description = "비행계획서 관련 API") + @ApiOperation(value = "Laanc 공문 다운로드") + public void downloadPDF(int fileSno){ - templateService.fileDownload(fileSno, response); + templateService.fileDownload(fileSno); } } diff --git a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java index f41becc..af230e1 100644 --- a/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java +++ b/pav-server/src/main/java/com/palnet/biz/api/bas/flight/template/service/TemplateService.java @@ -111,48 +111,12 @@ public class TemplateService { * @param fileSno * @param response */ - public void fileDownload(int fileSno, HttpServletResponse response) { + public void fileDownload(int fileSno) { ComFileBas comFileBas = comFileBasRepository.findById(fileSno).orElse(null); - if(comFileBas == null) throw new CustomException(ErrorCode.DATA_NOTFIND); - - InputStream inputStream = null; - OutputStream outputStream = null; - - try { - File pdfFile = new File(comFileBas.getFilePath() + comFileBas.getFileSaveNm()); - inputStream = new FileInputStream(pdfFile); - - String fileOriName = comFileBas.getFileOriNm(); - fileOriName = URLEncoder.encode(comFileBas.getFileOriNm(), "UTF-8"); - - response.setContentType("application/octet-stream"); - response.setCharacterEncoding("UTF-8"); - response.setHeader("Content-Disposition", "attachment; filename=\"" + fileOriName + "\""); - response.setContentLengthLong(Long.parseLong(comFileBas.getFileSize())); - response.setStatus(HttpServletResponse.SC_OK); - - outputStream = response.getOutputStream(); - - byte[] buffer = new byte[1024]; //1KB 설정 - int length; - - while((length = inputStream.read(buffer)) != -1) { - outputStream.write(buffer); - } - - } catch (Exception e) { - e.printStackTrace(); - } finally { - try { - Objects.requireNonNull(outputStream).flush(); - outputStream.close(); - inputStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - - } + if(comFileBas == null) throw new CustomException(ErrorCode.DATA_NOTFIND); + + pdfUtils.fileDownload(comFileBas); } diff --git a/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java b/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java index 9217365..2559af3 100644 --- a/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java +++ b/pav-server/src/main/java/com/palnet/comn/utils/PdfUtils.java @@ -1,16 +1,22 @@ package com.palnet.comn.utils; import java.io.File; +import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; import java.io.StringReader; +import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Paths; import java.time.Instant; import java.util.Map; import java.util.Map.Entry; +import java.util.Objects; + +import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -35,13 +41,16 @@ import com.itextpdf.tool.xml.pipeline.css.CssResolverPipeline; import com.itextpdf.tool.xml.pipeline.end.PdfWriterPipeline; import com.itextpdf.tool.xml.pipeline.html.HtmlPipeline; import com.itextpdf.tool.xml.pipeline.html.HtmlPipelineContext; -import com.palnet.biz.api.acnt.jwt.utils.JwtTokenUtil; import com.palnet.biz.api.bas.flight.template.vo.PdfBaseVO; import com.palnet.biz.jpa.entity.ComFileBas; +import com.palnet.comn.code.ErrorCode; +import com.palnet.comn.exception.CustomException; @Component public class PdfUtils { + @Autowired + private HttpServletResponse response; @Autowired private TemplateEngine templateEngine; @@ -166,4 +175,48 @@ public class PdfUtils { return result; } + + /** + * 파일 Download + * @param comFileBas + */ + public void fileDownload(ComFileBas comFileBas){ + InputStream inputStream = null; + OutputStream outputStream = null; + + try { + File pdfFile = new File(comFileBas.getFilePath() + comFileBas.getFileSaveNm()); + inputStream = new FileInputStream(pdfFile); + + String fileOriName = comFileBas.getFileOriNm(); + fileOriName = URLEncoder.encode(comFileBas.getFileOriNm(), "UTF-8"); + + response.setContentType("application/octet-stream"); + response.setCharacterEncoding("UTF-8"); + response.setHeader("Content-Disposition", "attachment; filename=\"" + fileOriName + "\""); + response.setContentLengthLong(Long.parseLong(comFileBas.getFileSize())); + response.setStatus(HttpServletResponse.SC_OK); + + outputStream = response.getOutputStream(); + + byte[] buffer = new byte[1024]; //1KB 설정 + int length; + + while((length = inputStream.read(buffer)) != -1) { + outputStream.write(buffer); + } + + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + Objects.requireNonNull(outputStream).flush(); + outputStream.close(); + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + + } + } }