Javac Spire.Presentation 之PPT文本图片内容提取

news2024/11/16 6:51:20

目录结构

    • 前言
    • 文档准备
    • 引入Maven依赖
    • 代码块
    • 提取结果验证
        • ppt_demo.ppt 提取结果
        • pptx_demo.pptx 提取结果

前言

应公司需求,需实现以下功能

  1. PPT文本内容的替换;
  2. PPT文本内容的提取;
  3. PPT中图片的提取存放;

此文章将使用Spire.Presentation实现对PPT文件中文本内容及图片的提取;

Spire.Presentation for Java是一个专业的 PowerPoint API,180846090使开发人员能够在 Java 应用程序中创建、读取、编写、转换和保存 PowerPoint 文档。作为一个独立的Java 库,Spire.Presentation 不需要在系统上安装Microsoft PowerPoint。

文档准备

小编准备了以下两个文件:《ppt_demo.ppt》《pptx_demo.pptx》,分别代表不同版本的PPT,以便提取测试,如下图在这里插入图片描述

引入Maven依赖

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>

<dependencies>
	<dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.presentation</artifactId>
        <version>4.9.2</version>
    </dependency>
</dependencies>

代码块

package com.bjzaxk.utils;

import com.spire.presentation.IAutoShape;
import com.spire.presentation.ISlide;
import com.spire.presentation.ParagraphEx;
import com.spire.presentation.Presentation;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;

public class Demo {
    public static void main(String[] args) {
//        String filePath = "C:\\Users\\Administrator\\Desktop\\java_poi\\demo_file\\ppt_demo.ppt";
        String filePath = "C:\\Users\\Administrator\\Desktop\\java_poi\\demo_file\\pptx_demo.pptx";
        // 文本提取后存放路径及文件名
//        String extractFilePath = "C:\\Users\\Administrator\\Desktop\\java_poi\\demo_file\\ppt_demo.txt";
        String extractFilePath = "C:\\Users\\Administrator\\Desktop\\java_poi\\demo_file\\pptx_demo.txt";
        // 图片提取后存放路径
        String imageFilePath = "C:\\Users\\Administrator\\Desktop\\java_poi\\demo_file\\";

        pptTextExtract(filePath, extractFilePath);
        pptImageExtract(filePath, imageFilePath);
    }

    /**
     * @description: 提取PPT中的文本信息
     * @author: Mr.Jkx
     * @time: 2023/2/2 14:53
     */
    public static void pptTextExtract(String filePath, String extractFilePath) {
        try {
            //加载文档
            Presentation ppt = new Presentation();
            ppt.loadFromFile(filePath);
            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()).append("\r\n");
                        }
                    }
                }
            }
            if (buffer.length() > 0) {
                //保存到文本文件
                FileWriter writer = new FileWriter(extractFilePath);
                writer.write(buffer.toString());
                writer.flush();
                writer.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * @description: 提取PPT中的图片
     * @author: Mr.Jkx
     * @time: 2023/1/10 14:26
     */
    public static void pptImageExtract(String filePath, String imageFilePath) {
        try {
            //加载文档
            Presentation ppt = new Presentation();
            ppt.loadFromFile(filePath);
            //提取文档中的所有图片
            for (int i = 0; i < ppt.getImages().getCount(); i++) {
                BufferedImage image = ppt.getImages().get(i).getImage();
                ImageIO.write(image, "PNG", new File(imageFilePath + "pptImage_" + System.currentTimeMillis() + ".png"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

提取结果验证

  • 提取文本会存放于一个txt文件中(小编工作需求,其他类型文件未尝试!);
  • 提取的图片会存放于“imageFilePath ”路径中;
  • 提取过程中不会改变原本PPT内容;

ppt_demo.ppt 提取结果

在这里插入图片描述

pptx_demo.pptx 提取结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195923.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mal-PEG-SCM,Maleimide PEG SCM,双功能修饰性PEG

Mal-PEG-SCM&#xff0c;SCM-PEG-Maleimide&#xff0c;Maleimide PEG SCM&#xff0c;Maleimide PEG Succinimidyl Carboxymethyl Ester马来酰亚胺-聚乙二醇-琥珀酰亚胺羧甲基酯&#xff0c;马来酰亚胺PEG琥珀酰亚胺羧甲基酯Product specifications&#xff1a;1.CAS No&#…

DataGrip下载安装及使用教程(详细版)

一.安装教程 1.下载 官网下载&#xff1a;DataGrip: The Cross-Platform IDE for Databases && SQL by JetBrains 2.点击Download跳转到下载页面 3.下载最新版本的可以直接点击 Download 下载&#xff0c;下载其他版本的点击 Other versions 下载其他版本 4. 4.选择…

改变Linux文件权限、所属用户组、所有者知识总结

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Linux操作…

requestAnimationFrame详解-js性能优化

requestAnimationFrame 请求动画帧 它是一个浏览器的宏任务 requestAnimationFrame的用法与settimeout很相似&#xff0c;只是不需要设置时间间隔而已。requestAnimationFrame使用一个回调函数作为参数&#xff0c;这个回调函数会在浏览器重绘之前调用。它返回一个整数&#x…

快鲸SCRM打通工单系统,实现客户售前售后一体化管理

深度运营客户关系&#xff0c;做好客户售后服务&#xff0c;才符合企业的长远利益。然而大多数企业只注重售前售中&#xff0c;忽视了售后&#xff0c;导致客户售后服务现状不尽人意&#xff0c;主要体现在&#xff1a; 把客户问题抛到售后群后&#xff0c;便放任不管; 缺乏标…

自动驾驶感知——超声波技术

文章目录1. 超声波基本概念1.1 声波的频率与分类1.2 超声波的波速和波长1.3 超声波的指向性1.4 超声波的反射和折射1.5 超声波的衰减1.6 超声波产生的效应2. 超声波传感器原理及传感器分类2.1 超声波传感器原理2.2 压电式超声波传感器2.3 磁致伸缩式超声波传感器2.4 超声波传感…

MyBatis案例 | 使用映射配置文件实现CRUD操作——通过主键查询对应数据

本专栏主要是记录学习完JavaSE后学习JavaWeb部分的一些知识点总结以及遇到的一些问题等&#xff0c;如果刚开始学习Java的小伙伴可以点击下方连接查看专栏 本专栏地址&#xff1a;&#x1f525;JavaWeb Java入门篇&#xff1a; &#x1f525;Java基础学习篇 Java进阶学习篇&…

关于Linux中断的相关查询

1.linux 内核 /proc/interrupts 在 /proc/interrupts 文件中记录了 Linux 内核的中断信息&#xff0c;我们可以通过命令查看 sudo cat /proc/interrupts 文件中以表格的形式列举出来所有的内核中断&#xff0c;其表头信息标注如下&#xff1a; 我们可以通过特定任务执行时…

计算机SCI论文一定要在指定的机构润色吗? - 易智编译EaseEditing

不一定要在指定的机构润色。 首先期刊要求润色&#xff0c;是非常正常的事情。国人投的中文论文&#xff0c;有的也会被要求润色。 更不要说国外的英文期刊了&#xff0c;咱们写的英文文章投过去&#xff0c;大部分都会被要求润色的。 为什么期刊总是要求润色语言呢&#xff…

Windows7操作系统安全(3)

实验简介 实验所属系列&#xff1a;网络安全实践 实验对象&#xff1a; 本科/专科信息安全专业 相关课程及专业&#xff1a;计算机基础&#xff0c;Linux基础 实验时数&#xff08;学分&#xff09;&#xff1a;2学时 实验类别&#xff1a;实践实验类预备知识 Windows系列是目…

Oracle重建控制文件

利用trace文件重建控制文件 1、生成trace文件&#xff1a; SQL>alter database backup controlfile to trace;2、找到生成的trace文件&#xff1a; SQL>show parameter user_dump_destuser_dump_dest 文件对应的路径即为trace文件的路径 3、关闭数据库 SQL>shutdo…

VueJS 之模板引用

文章目录参考描述模板引用引用访问模板引用组件中的模板引用$nextTick()示例updated错误示范正确演示$nextTick()参考 项目描述搜索引擎Bing哔哩哔哩黑马程序员VueJS 官方文档模板引用 描述 项目描述Edge109.0.1518.70 (正式版本) (64 位)操作系统Windows 10 专业版vue/cli5.…

jvm相关,jvm内存溢出,内存占用过高,CPU占用率高原因分析,MAT内存镜像文件分析的使用----学习笔记

什么是内存泄漏? 什么是内存溢出 内存溢出: OutOfMemory 它是指程序在申请内存时&#xff0c;没有足够的内存空间供其使用&#xff0c;抛出 OutOfMemory 错误 内存泄露: Memory Leak 它是指程序运行后&#xff0c;没有释放所占用的内存空间&#xff0c;比如程序运行完后没有释…

数据库和SQL初探

数据库和SQL初探1. 什么是数据库2. 数据库的结构3. MySQL表定义相关操作4. MySQL体系结构和存储引擎1. 什么是数据库 将大量数据保存起来&#xff0c;通过计算机加工而成的可以进行高效访问的数据集合。用来管理数据库的计算机系统称为数据库管理系统(DatabaseManagementSyste…

Java面试题二(自用-持续更新)

本文目录如下&#xff1a;Java面试题(二)四、并发编程线程和进程的区别&#xff1f;守护线程是什么&#xff1f;创建线程有哪几种方式&#xff1f;线程有哪些状态&#xff1f;sleep() 和 wait() 有什么区别&#xff1f;线程的sleep()方法和yield()方法有什么区别&#xff1f;线…

我发现买不起自己出版的书了,这到底是咋回事?

大家好&#xff0c;我是冰河~~ 这次我是真的有点买不起自己的书了&#xff01; 聊聊背景 继出版《海量数据处理与大数据技术实战》、《MySQL技术大全&#xff1a;开发、优化与运维实战》和《深入理解分布式事务&#xff1a;原理与实战》之后&#xff0c;冰河于2022年6月出版…

基于uni-app的小程序电子签名功能(带有笔锋)

前言 目前做的一个项目需要用到电子签名的功能&#xff0c;网上其实也挺多这种类型的电子签名&#xff0c;但是带有笔锋效果的确比较少&#xff0c;所以参考了一些博客&#xff0c;总结成了这个功能&#xff0c;在此分享给大家。 效果展示 代码展示 触摸开始&#xff08;touc…

大数据专业需要学习python么

如果零基础入门数据开发行业的小伙伴&#xff0c;可以从Python语言入手。 Python语言简单易懂&#xff0c;适合零基础入门&#xff0c;在编程语言排名上升最快&#xff0c;能完成数据挖掘、机器学习、实时计算在内的各种大数据集成任务。 但是不会python也是没有关系的&#…

基于Vector VT系统的车身域测试方案介绍

车身域控制器作为车身主要部件的控制大脑&#xff0c;需要经过严苛的测试&#xff0c;常见的测试方式是通过搭建硬件在环测试系统实现的&#xff0c;测试原理是通过仿真控制器外围的传感器和执行器&#xff0c;实现车身域控制器的闭环仿真和测试。小怿基于国际一流的测试设备提…

Day15 C++STL入门基础知识九——list容器 基本概念-构造函数-赋值变换-大小操作-插入删除-数据存取-反转排序 【全面深度剖析+例题代码展示】

文章目录1. 基本概念1.1 功能1.2 概念1.3 组成和存储方式1.4 优缺点1.4 图解2. 构造函数2.1 函数原型2.2 代码展示2.3 测试结果3. 赋值交换3.1 函数原型3.2 代码展示3.3 测试结果4. 大小操作1.3 代码展示1.4 测试结果6. 插入删除6.1 函数原型6.2 代码展示6.3 测试结果7. 数据存…