Trong bài đăng trên blog trước đây, chúng tôi đã khám phá API Apache POI XSLF để tạo và cập nhật tệp Microsoft PowerPoint PPTX bằng Java. Apache POI cho Java cho phép bạn làm việc với các tệp PPT và PPTX từ bên trong các ứng dụng Java của mình mà không cần đi sâu vào chi tiết định dạng tệp nội bộ của các tệp này. Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết về cách sử dụng API Apache POI để chèn hình ảnh vào PPTX bằng Java. Chúng ta cũng sẽ xem cách đọc thông tin hình ảnh từ tệp PPTX bằng Java.

yêu cầu hệ thống

Trước khi bạn bắt đầu, hãy đảm bảo rằng hệ thống của bạn đáp ứng các yêu cầu sau.

  • JDK – Java SE 2 JDK 1.5 trở lên
  • Bộ nhớ – Ram 1 GB
  • Hệ điều hành – Windows/ Linux/ Mac OS

Cài đặt Apache POI cho Java

Bạn sẽ cần một môi trường phát triển Java như Eclipse, IntelliJ IDEA hoặc bất kỳ IDE nào khác mà bạn cảm thấy thoải mái khi làm việc với thư viện Apache POI trong ứng dụng của mình. Tiếp theo là thêm phần phụ thuộc Apache POI Maven vào tệp pom.xml của ứng dụng của bạn như hiển thị bên dưới.

<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>

Thư viện Java để thêm ảnh vào tệp PPTX

Ở giai đoạn này, chúng tôi giả định rằng môi trường phát triển của bạn đã sẵn sàng và chúng tôi có thể bắt đầu bằng việc viết mã để thêm hình ảnh vào tệp bản trình bày PowerPoint. Điều này đạt được bằng cách sử dụng phương thức createPicture() của lớp XSLFSlide. Chèn hình ảnh vào slide trong PowerPoint bao gồm các bước sau.

  • Tạo một thể hiện của lớp XMLSlideShow
  • Thêm một slide vào bản trình bày bằng cách gọi phương thức createSlide trên phiên bản bản trình bày từ bước 1
  • Tải hình ảnh từ tệp dưới dạng mảng byte và thêm nó vào phiên bản XSLFPictureData
  • Gọi phương thức createPicture trên phiên bản của slide
  • Lưu bản trình bày vào đầu ra

Mẫu mã sau đây minh họa các bước này.

//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();

Đọc thông tin hình ảnh từ tệp PPTX

Với API Apache POI cho Java, bạn có thể đọc dữ liệu của tất cả hình ảnh từ trong tệp PPTX bằng cách sử dụng phương thức getPictureData() của lớp XMLSlideShow. Mã mẫu sau đây minh họa chức năng này bằng cách đọc hình ảnh từ bản trình bày.

//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();

Phần kết luận

Các thành phần Apache POI để làm việc với các tệp bản trình bày PowerPoint cho phép bạn chèn hình ảnh vào tệp PowerPoint PPT và PPTX từ bên trong ứng dụng Java của bạn. Nó cũng cho phép bạn đọc thông tin hình ảnh từ hình ảnh trên slide. Trong các blog sắp tới của chúng tôi, chúng tôi sẽ trình bày thêm cách sử dụng các thành phần Apache POI Java để làm việc với các bản trình bày PowerPoint. Vậy nên hãy chờ trong giây lát.