Java InputStreamReader 错误 (org.apache.poi.openxml4j.exceptions.InvalidOperationException)
Java InputStreamReader Error (org.apache.poi.openxml4j.exceptions.InvalidOperationException)
我正在尝试使用 Apache POI Framework (Java) 将 pptx 文件转换为 txt(文本提取)。
我是编码新手 Java,所以我对 Buffered Readers/InputStream 等了解不多
我试过的是:
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();
我的目标是,将提取的文本写入一个变量,但它甚至无法在控制台上打印...我得到的是:
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)
如有任何帮助,我们将不胜感激!
你做的太多太多了,事实上你正在尝试读取 PPTX 本身的数据作为文件名,最好简单地使用
System.out.println(new XSLFPowerPointExtractor(
new XMLSlideShow(new XSLFSlideShow(
"X:\Master\simpl_temp\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx"))).getText());
或更通用
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();
我不能给你正确的答案(因为我自己不使用POI),但我可以告诉你你的错误可能在哪里。
class XSLFSlideShow 的构造函数期望文件路径作为其参数。但是您传递的是 InputStream。尝试如下:
String filePath = "X:\Master\simpl_temp\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx";
System.out.println(new XSLFPowerPointExtractor(new XMLSlideShow(new XSLFSlideShow(filePath))).getText());
我正在尝试使用 Apache POI Framework (Java) 将 pptx 文件转换为 txt(文本提取)。 我是编码新手 Java,所以我对 Buffered Readers/InputStream 等了解不多
我试过的是:
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();
我的目标是,将提取的文本写入一个变量,但它甚至无法在控制台上打印...我得到的是:
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)
如有任何帮助,我们将不胜感激!
你做的太多太多了,事实上你正在尝试读取 PPTX 本身的数据作为文件名,最好简单地使用
System.out.println(new XSLFPowerPointExtractor(
new XMLSlideShow(new XSLFSlideShow(
"X:\Master\simpl_temp\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx"))).getText());
或更通用
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();
我不能给你正确的答案(因为我自己不使用POI),但我可以告诉你你的错误可能在哪里。 class XSLFSlideShow 的构造函数期望文件路径作为其参数。但是您传递的是 InputStream。尝试如下:
String filePath = "X:\Master\simpl_temp\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx";
System.out.println(new XSLFPowerPointExtractor(new XMLSlideShow(new XSLFSlideShow(filePath))).getText());