관리 메뉴

피터의 개발이야기

[Spring] PDF을 이미지 파일로 변환하기 본문

Programming/Spring

[Spring] PDF을 이미지 파일로 변환하기

기록하는 백앤드개발자 2020. 12. 23. 01:02
반응형

프로젝트 진행 중 PDF를 등록하면 첫장을 섬네일로 보여달라는 요청이 있었습니다.
기술 검토를 해야하는 부분이라 퇴근하고 집에서 공부할 겸 테스트한 내용 글로 남깁니다.

 

Gradle 추가

compile group: ‘org.apache.pdfbox’, name: ‘pdfbox’, version: ‘2.0.13’
compile group: ‘org.apache.pdfbox’, name: ‘pdfbox-tools’, version: ‘2.0.13’

 

소스

    @Test
    void contextLoads() {
        try{
            String filePath = "pdf_test.pdf";
            File file = new File(filePath);
            ClassPathResource classPathResource = new ClassPathResource(filePath);
            InputStream is = new BufferedInputStream(classPathResource.getInputStream());
            conversionPdf2Img(is,"peter");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    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 = "/Users/peterseo/study/temp/"; //이미지가 저장될 경로
            Files.createDirectories(Paths.get(resultImgPath)); // 폴더 생성
            
            // PDF페이지 루프
            for (int i=0; i<pdfDoc.getPages().getCount(); i++) {
                String imgFileName = resultImgPath + "/" + i + ".png";

                //DPI 설정
                BufferedImage bim = pdfRenderer.renderImageWithDPI(i, 72, ImageType.RGB);

                // 이미지로 만든다.
                ImageIOUtil.writeImage(bim, imgFileName , 72);

                //저장 완료된 이미지 경로를 list에 추가
                savedImgList.add(imgFileName);
            }
            pdfDoc.close(); //모두 사용한 PDF 문서는 닫는다.
        }catch (FileNotFoundException e) {

        }catch (IOException e) {

        }
        return savedImgList;
    }

 

내 소스는 여기

이분꺼 그대로 복사해서 사용하였습니다.
감사합니다.
복붙한 곳

반응형
Comments