본문 바로가기

Spring Boot

[SpringBoot] Apache PDFBox 이용한 PDF to Image 변환처리

반응형

1. 다음 종속성을 pom.xml 파일에 추가합니다.

<dependency>
  <groupId>org.apache.pdfbox</groupId>
  <artifactId>pdfbox</artifactId>
  <version>2.0.20</version>
</dependency>

 

2. Spring Boot 애플리케이션에서 변환을 처리할 REST을 생성합니다.

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

@RestController
public class PdfConversionController {
  @PostMapping("/convert-to-image")
  public ResponseEntity<byte[]> convertToImage(@RequestParam("file") MultipartFile file) throws IOException {
    // Load the PDF file
    PDDocument document = PDDocument.load(file.getInputStream());

    // Render the PDF to images
    PDFRenderer renderer = new PDFRenderer(document);
    List<BufferedImage> images = renderer.render(0, document.getNumberOfPages(), ImageType.RGB);

    // Write the images to a byte array
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    for (BufferedImage image : images) {
      ImageIO.write(image, "png", baos);
    }
    document.close();

    // Return the images as a response
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "image/png");
    return ResponseEntity.ok().headers(headers).body(baos.toByteArray());
  }
}

Apache PDFBox를 사용하여 PDD 문서로 로드한 다음 각 페이지를 PDFender를 사용하여 이미지로 변환합니다. 그런 다음 영상이 바이트 배열에 기록되고 응답에 바이트[]로 반환됩니다.

반응형