使用Java将PPT幻灯片转换成图片
要将 PowerPoint 幻灯片转换为图像,需要多个包,例如Java.awt,因为它包含用于创建用户界面和绘制图形和图像的所有类, Java.io 因为它提供一组输入流和一组输出流用于向文件或其他输入和输出源读取和写入数据,Apache POI 因为它用于使用Java程序创建、修改和显示 Microsoft Office 文件。
下载 Apache POI
- 从官方网站下载 zip 文件。
- 从 zip 文件中提取外部 jar 文件。
- 添加外部 jar 文件。
为此选择Java Build Path -> Configure Build Path -> Libraries -> Class -> Add External Jars... - 从所需文件夹中选择 jar 文件
- 单击应用并关闭。
从Java.awt 导入
- Java.awt.Color:此类具有更改界面中对象外观所需的颜色。
- Java.awt.Dimension它包含组件的高度和宽度。
- Java.awt.Graphics2D它提供对几何、坐标变换、颜色管理和文本布局的控制。
- Java.awt.geom.Rectangle2D它描述了一个由位置 (x,y) 和维度 (wxh) 定义的矩形。
- Java.awt.image.BufferedImage用于处理和操作图像数据。
从Java.io 导入
- Java.io.File:它包含了几种处理路径名、删除和重命名文件等的方法。
- Java.io.FileInputStream:用于从文件中读取数据。
- Java.io.FileOutputStream:用于将数据写入文件。
- Java.io.IOException:代码中用于在输入和输出操作中抛出失败的异常
从 Apache POI 导入
- org.apache.poi.xslf.usermodel.XMLSlideShow:用于创建对象来读取或写入幻灯片。
- org.apache.poi.xslf.usermodel.XSLFSlide:用于在演示文稿中创建和管理幻灯片。
执行:
Java
// Converting the slides of a PPT into Images using Java
import java.util.List;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xslf.usermodel.XMLSlideShow;
import org.apache.poi.xslf.usermodel.XSLFSlide;
public class PPTToImages {
public static void main(String args[])
throws IOException
{
// create an empty presentation
File file = new File("slides.pptx");
XMLSlideShow ppt
= new XMLSlideShow(new FileInputStream(file));
// get the dimension and size of the slide
Dimension pgsize = ppt.getPageSize();
List slide = ppt.getSlides();
BufferedImage img = null;
System.out.println(slide.size());
for (int i = 0; i < slide.size(); i++) {
img = new BufferedImage(
pgsize.width, pgsize.height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
// clear area
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(
0, 0, pgsize.width, pgsize.height));
// draw the images
slide.get(i).draw(graphics);
FileOutputStream out = new FileOutputStream(
"ppt_image" + i + ".png");
javax.imageio.ImageIO.write(img, "png", out);
ppt.write(out);
out.close();
System.out.println(i);
}
System.out.println("Image successfully created");
}
}
程序执行前:
程序执行后: