在我们之前的博客文章中,我们探讨了用于使用 Java 创建和更新 Microsoft PowerPoint PPTX 文件 的 Apache POI XSLF API。 Apache POI for Java 允许您在 Java 应用程序中处理 PPT 和 PPTX 文件,而无需了解这些文件的内部文件格式详细信息。 在本文中,我们将详细介绍如何使用 Apache POI API 通过 Java 在 PPTX 中插入图像。我们还将了解如何使用 Java 从 PPTX 文件读取图像信息。

系统要求

在开始之前,请确保您的系统满足以下要求。

  • JDK – Java SE 2 JDK 1.5 或更高版本
  • 内存 – 1 GB 内存
  • 操作系统 – Windows/Linux/Mac OS

安装适用于 Java 的 Apache POI

您需要一个 Java 开发环境,例如 Eclipse、IntelliJ IDEA 或任何其他您熟悉的 IDE,以便在应用程序中使用 Apache POI 库。接下来是在应用程序的 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 文件中。它还允许您从幻灯片上的图像中读取图像信息。在我们即将发布的博客中,我们将进一步演示如何使用 Apache POI Java 组件来处理 PowerPoint 演示文稿。所以,请继续关注。