首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java (org.apache.poi.openxml4j.exceptions.InvalidOperationException) InputStreamReader错误

Java (org.apache.poi.openxml4j.exceptions.InvalidOperationException) InputStreamReader错误
EN

Stack Overflow用户
提问于 2016-03-18 11:38:46
回答 2查看 1K关注 0票数 1

我试图使用(Java)将pptx文件转换为txt (文本提取)。我是编写Java代码的新手,所以我对缓冲读取器/InputStream等不太了解。

我试过的是:

代码语言:javascript
复制
import org.apache.poi.xslf.XSLFSlideShow;
import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
import org.apache.poi.xslf.usermodel.XMLSlideShow;    

... Classes and Stuff ....

String inputfile = "X:\\Master\\simpl_temp\\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx";
InputStream fis = new FileInputStream(inputfile);
BufferedReader br1 = new BufferedReader(new InputStreamReader(fis));
String fileName = br1.readLine();

System.out.println(new XSLFPowerPointExtractor(new XMLSlideShow(new XSLFSlideShow(fileName))).getText());
br1.close();

我的目标是将提取的文本写入变量,但它甚至不能在控制台上打印出来…我得到的是:

代码语言:javascript
复制
org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'PK
org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:102)
org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:199) 
org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:178) 
org.apache.poi.POIXMLDocument.openPackage(POIXMLDocument.java:69) 
org.apache.poi.xslf.XSLFSlideShow.<init>(XSLFSlideShow.java:90) 

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-18 12:06:40

我不能给你正确的答案(因为我自己不使用POI),但是我可以告诉你你的错误在哪里。类XSLFSlideShow的构造函数期望文件路径作为其参数。但是你正在传递一个InputStream。试一试如下:

代码语言:javascript
复制
String filePath = "X:\\Master\\simpl_temp\\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx";
System.out.println(new XSLFPowerPointExtractor(new XMLSlideShow(new XSLFSlideShow(filePath))).getText());
票数 0
EN

Stack Overflow用户

发布于 2016-03-18 12:00:57

您所做的工作很多,实际上您正在尝试将PPTX本身的数据作为文件名读取,更好的方法是

代码语言:javascript
复制
System.out.println(new XSLFPowerPointExtractor(
    new XMLSlideShow(new XSLFSlideShow(
    "X:\\Master\\simpl_temp\\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx"))).getText());

或者更一般的

代码语言:javascript
复制
POITextExtractor extractor = ExtractorFactory.createExtractor(
    new java.io.File("X:\\Master\\simpl_temp\\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx"");
System.out.println(extractor.getText());
extractor.close();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36083392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档