1

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) 

どんな助けでも大歓迎です!

4

2 に答える 2

1

実際には、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();
于 2016-03-18T12:00:57.303 に答える
0

I cannot give you the correct answer (because I myself don't use POI), but I can tell you where your mistake might lie. The constructor of the class XSLFSlideShow is expecting file path as its argument. But you are passing an InputStream. Try it as follows:

String filePath = "X:\\Master\\simpl_temp\\2d0a44a2-95e7-428c-911c-1f803acbff42.pptx";
System.out.println(new XSLFPowerPointExtractor(new XMLSlideShow(new XSLFSlideShow(filePath))).getText());
于 2016-03-18T12:06:40.097 に答える