이전 블로그 게시물에서는 Java를 사용하여 Microsoft PowerPoint PPTX 파일 생성 및 업데이트를 위한 Apache POI XSLF API를 살펴보았습니다. Java용 Apache POI를 사용하면 내부 파일 형식 세부 정보에 접근하지 않고도 Java 애플리케이션 내에서 PPT 및 PPTX 파일로 작업할 수 있습니다. 이 기사에서는 Apache POI API를 사용하여 Java를 사용하여 PPTX에 이미지를 삽입하는 방법을 자세히 살펴보겠습니다. 또한 Java를 사용하여 PPTX 파일에서 이미지 정보를 읽는 방법도 살펴보겠습니다.

시스템 요구 사항

시작하기 전에 시스템이 다음 요구 사항을 충족하는지 확인하십시오.

  • JDK – Java SE 2 JDK 1.5 이상
  • 메모리 – 1GB RAM
  • 운영 체제 – Windows/Linux/Mac OS

Java용 Apache POI 설치

애플리케이션에서 Apache POI 라이브러리를 사용하려면 Eclipse, IntelliJ IDEA 또는 기타 익숙한 IDE와 같은 Java 개발 환경이 필요합니다. 다음은 아래와 같이 애플리케이션의 pom.xml 파일에 Apache POI Maven 종속성을 추가하는 것입니다.

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.23.0</version>
</dependency>
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.7</version>
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version>
</dependency>

PPTX 파일에 그림을 추가하는 Java 라이브러리

이 단계에서는 개발 환경이 준비되었다고 가정하고 PowerPoint 프레젠테이션 파일에 이미지를 추가하는 코드 작성부터 시작할 수 있습니다. 이는 XSLFSlide 클래스의 createPicture() 메소드를 사용하여 달성됩니다. PowerPoint에서 슬라이드에 이미지를 삽입하는 과정은 다음과 같습니다.

  • XMLSlideShow 클래스의 인스턴스 만들기
  • 1단계의 프레젠테이션 인스턴스에서 createSlide 메서드를 호출하여 프레젠테이션에 슬라이드를 추가합니다.
  • 파일의 이미지를 바이트 배열로 로드하고 XSLFPictureData 인스턴스에 추가합니다.
  • 슬라이드 인스턴스에서 createPicture 메소드를 호출합니다.
  • 프레젠테이션을 출력에 저장

다음 코드 샘플은 이러한 단계를 보여줍니다.

//creating a presentation 
XMLSlideShow pptx = new XMLSlideShow();
  
//creating a slide in it 
XSLFSlide slide = pptx.createSlide();
  
//reading an image
File image = new File("fileformat.png");
  
//converting it into a byte array
byte[] picture = IOUtils.toByteArray(new FileInputStream(image));
  
//adding the image to the presentation
XSLFPictureData idx = pptx.addPicture(picture, PictureType.PNG);
  
//creating a slide with given picture on it
XSLFPictureShape pic = slide.createPicture(idx);
  
//creating a file object 
File file = new File("imagetopresentation.pptx");
FileOutputStream out = new FileOutputStream(file);
  
//saving the changes to a file
pptx.write(out);
out.close();

PPTX 파일에서 이미지 정보 읽기

Java용 Apache POI API를 사용하면 XMLSlideShow 클래스의 getPictureData() 메서드를 사용하여 PPTX 파일 내에서 모든 이미지의 데이터를 읽을 수 있습니다. 다음 샘플 코드는 프레젠테이션에서 이미지를 읽어 이 기능을 보여줍니다.

//open an existing presentation 
File file = new File("imagetopresentation.pptx");
XMLSlideShow pptx = new XMLSlideShow(new FileInputStream(file));
  
//reading all the images from the presentation
for(XSLFPictureData data : pptx.getPictureData()){
     byte[] bytes = data.getData();
     String fileName = data.getFileName();
     PictureType pictureFormat = data.getType();
     System.out.println("picture name: " + fileName);
     System.out.println("picture format: " + pictureFormat);
 }

 //saving the changes to a file
 FileOutputStream out = new FileOutputStream(file);
 pptx.write(out);
 out.close();

결론

PowerPoint 프레젠테이션 파일 작업을 위한 Apache POI 구성 요소를 사용하면 Java 애플리케이션 내에서 PowerPoint PPT 및 PPTX 파일에 이미지를 삽입할 수 있습니다. 또한 슬라이드의 이미지에서 이미지 정보를 읽을 수도 있습니다. 다가오는 블로그에서는 PowerPoint 프레젠테이션 작업을 위해 Apache POI Java 구성 요소를 사용하는 방법을 추가로 시연할 예정입니다. 그러니 계속 지켜봐 주시기 바랍니다.