private List<String> conversionPdf2Img(InputStream is, String uniqueId){ List<String> savedImgList = new ArrayList<>(); //저장된 이미지 경로를 저장하는 List 객체 try { PDDocument pdfDoc = PDDocument.load(is); //Document 생성 PDFRenderer pdfRenderer = new PDFRenderer(pdfDoc);
String resultImgPath = "/home/dev/sample/result/"; //이미지가 저장될 경로 Files.createDirectories(Paths.get(resultImgPath)); //PDF 2 Img에서는 경로가 없는 경우 이미지 파일이 생성이 안되기 때문에 디렉토리를 만들어준다.
//순회하며 이미지로 변환 처리 for (int i=0; i<pdfDoc.getPages().getCount(); i++) { String imgFileName = resultImgPath + "/" + i + ".png"; //DPI 설정 BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 300, ImageType.RGB);
// 이미지로 만든다. ImageIOUtil.writeImage(bim, imgFileName , 300);
//저장 완료된 이미지를 list에 추가한다. savedImgList.add(makeDownloadUrl4Uuid(imgFileName)); } pdfDoc.close(); //모두 사용한 PDF 문서는 닫는다. } catch (FileNotFoundException e) { thrownew PdfNotFoundException(this, "Pdf file not found. exception message = " + e.getMessage() ); } catch (IOException e) { thrownew Pdf2ImgChangeException(this, "Change fail pdf to image. IOException message = " + e.getMessage() ); } return savedImgList; }
위 메서드에서 전달인자는 InputStream을 받는데 이 부분은 PDF 파일을 FileInputStream으로 넘겨주면 된다. new FileInputStream(new File(inputPdfPath)) 와 같이 처리할 수 있다. 그리고 이 메서드는 이미지를 변환한 파일의 경로를 반환하는데 이 부분은 알맞게 변환하여 사용하면 된다.