如何使用Java讀取PPT文本和圖片
前言
本篇文章將介紹通過Java程序來讀取PPT幻燈片中的文本及圖片的方法。讀取圖片時,可讀取文檔中的所有圖片,也可以讀取指定幻燈片當(dāng)中的圖片。
工具:
- Free Spire.Presentation for Java(免費(fèi)版)
- IntelliJ IDEA
Jar文件獲取及導(dǎo)入:
方法1:官網(wǎng)下載jar文件包。下載后,解壓文件,并在java程序中導(dǎo)入lib文件夾下的Spire.Presentation.jar文件。
方法2:可通過maven倉庫導(dǎo)入到maven項(xiàng)目。
Java代碼示例
測試文檔:

【示例1】讀取PPT中的文本
import com.spire.presentation.IAutoShape;
import com.spire.presentation.ISlide;
import com.spire.presentation.ParagraphEx;
import com.spire.presentation.Presentation;
import java.io.FileWriter;
public class ExtractText {
public static void main(String[]args) throws Exception{
//加載測試文檔
Presentation ppt = new Presentation();
ppt.loadFromFile("test.pptx");
StringBuilder buffer = new StringBuilder();
//遍歷文檔中的幻燈片,提取文本
for (Object slide : ppt.getSlides()) {
for (Object shape : ((ISlide) slide).getShapes()) {
if (shape instanceof IAutoShape) {
for (Object tp : ((IAutoShape) shape).getTextFrame().getParagraphs()) {
buffer.append(((ParagraphEx) tp).getText());
}
}
}
}
//保存到文本文件
FileWriter writer = new FileWriter("ExtractText.txt");
writer.write(buffer.toString());
writer.flush();
writer.close();
}
}
文本讀取結(jié)果:

【示例2】讀取PPT中的所有圖片
import com.spire.presentation.Presentation;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractAllImgs {
public static void main(String[] args) throws Exception {
//加載文檔
Presentation ppt = new Presentation();
ppt.loadFromFile("test.pptx");
//提取文檔中的所有圖片
for (int i = 0; i < ppt.getImages().getCount(); i++) {
BufferedImage image = ppt.getImages().get(i).getImage();
ImageIO.write(image, "PNG", new File(String.format("AllImage-%1$s.png", i)));
}
}
}
【示例3】讀取指定幻燈片中的圖片
import com.spire.presentation.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
public class ExtractImgsInSpecifiedSlide {
public static void main(String[]args) throws Exception{
//加載文檔
Presentation ppt = new Presentation();
ppt.loadFromFile("test.pptx");
//獲取第2張幻燈片
ISlide slide = ppt.getSlides().get(1);
//提取圖片
for(int i = 0; i< slide.getShapes().getCount(); i++)
{
IShape shape = slide.getShapes().get(i);
if(shape instanceof SlidePicture)
{
SlidePicture pic = (SlidePicture) shape;
BufferedImage image = pic.getPictureFill().getPicture().getEmbedImage().getImage();
ImageIO.write(image, "PNG", new File(String.format("extractImageinslide-%1$s.png", i)));
}
if(shape instanceof PictureShape)
{
PictureShape ps = (PictureShape) shape;
BufferedImage image = ps.getEmbedImage().getImage();
ImageIO.write(image, "PNG", new File(String.format("extractImageinslide-%1$s.png", i)));
}
}
}
}
圖片讀取結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Java 微信公眾號開發(fā)相關(guān)總結(jié)
公眾號作為主流的自媒體平臺,有著不少人使用。這次以文本回復(fù)作為案例來講解Java相關(guān)的微信公眾號開發(fā)2021-05-05
spring boot開發(fā)遇到坑之spring-boot-starter-web配置文件使用教程
Spring Boot支持容器的自動配置,默認(rèn)是Tomcat,當(dāng)然我們也是可以進(jìn)行修改的。這篇文章給大家介紹了spring boot開發(fā)遇到坑之spring-boot-starter-web配置文件使用教程,需要的朋友參考下吧2018-01-01
mybatis項(xiàng)目實(shí)現(xiàn)動態(tài)表名的三種方法
有時在開發(fā)過程中java代碼中的表名和數(shù)據(jù)庫的表名并不是一致的,此時我們就需要動態(tài)的設(shè)置表名,本文主要介紹了mybatis項(xiàng)目實(shí)現(xiàn)動態(tài)表名的三種方法,具有一定的參考價值,感興趣的可以了解一下2024-01-01
詳解springboot項(xiàng)目啟動時如何排除用不到的bean
使用springboot開發(fā)項(xiàng)目,我們有時候會排除一些項(xiàng)目里面用不到的bean,不然的話項(xiàng)目啟動會報錯,這種情況通常是發(fā)生在什么場景里呢,以及如何解決呢,今天咱們就聊一聊2024-01-01

