注意,不涉及图片处理。
先上pom依赖:
<!-- 处理PPTX文件 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.3</version></dependency><!-- 处理PPT文件 --><dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>5.2.3</version></dependency>
代码:
java">public static void main(String[] args) {String filePath = "C:\\xx.pptx"; // 待处理ppt全路径try {IOUtils.setByteArrayMaxOverride(160000000);//分配内存160MString content = readPresentation(filePath);System.out.println(content);} catch (Exception e) {e.printStackTrace();}}public static String readPresentation(String filePath) throws Exception {if (filePath.toLowerCase().endsWith(".pptx")) {return readPPTX(filePath);} else if (filePath.toLowerCase().endsWith(".ppt")) {return readPPT(filePath);}throw new IllegalArgumentException("Unsupported file format");}// 处理PPTX文件private static String readPPTX(String filePath) throws Exception {StringBuilder content = new StringBuilder();XMLSlideShow ppt = new XMLSlideShow(new FileInputStream(filePath));for (XSLFSlide slide : ppt.getSlides()) {for (XSLFShape shape : slide.getShapes()) {if (shape instanceof XSLFTextShape) {content.append(((XSLFTextShape) shape).getText()).append("\n");}}}return content.toString();}// 处理PPT文件private static String readPPT(String filePath) throws Exception {StringBuilder content = new StringBuilder();try (HSLFSlideShow ppt = new HSLFSlideShow(new FileInputStream(filePath))) {for (HSLFSlide slide : ppt.getSlides()) {// 读取幻灯片中的形状for (HSLFShape shape : slide.getShapes()) {if (shape instanceof HSLFTextShape) {HSLFTextShape textShape = (HSLFTextShape) shape;content.append(textShape.getText()).append("\n");}}// 读取幻灯片中的文本框(兼容旧版本)for (List<HSLFTextParagraph> textParagraphs : slide.getTextParagraphs()) {for (HSLFTextParagraph para : textParagraphs) {content.append(para).append("\n");}}}}return content.toString();}
最终效果与wps自带的ppt转word只勾选文本差不多。