|
|
|
@ -1,19 +1,27 @@
|
|
|
|
|
package com.palnet.comn.utils; |
|
|
|
|
|
|
|
|
|
import java.io.File; |
|
|
|
|
import java.io.FileInputStream; |
|
|
|
|
import java.io.FileNotFoundException; |
|
|
|
|
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; |
|
|
|
|
import org.springframework.security.access.method.P; |
|
|
|
|
import org.springframework.stereotype.Component; |
|
|
|
|
import org.thymeleaf.TemplateEngine; |
|
|
|
|
import org.thymeleaf.context.Context; |
|
|
|
@ -35,13 +43,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 +177,55 @@ 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 (FileNotFoundException e) { |
|
|
|
|
throw new CustomException(ErrorCode.DATA_NO); |
|
|
|
|
} catch (IOException e){ |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} finally { |
|
|
|
|
try { |
|
|
|
|
if(outputStream != null){ |
|
|
|
|
Objects.requireNonNull(outputStream).flush(); |
|
|
|
|
outputStream.close(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(inputStream != null){ |
|
|
|
|
inputStream.close(); |
|
|
|
|
} |
|
|
|
|
} catch (IOException e) { |
|
|
|
|
e.printStackTrace(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|