Convert the XSLF text extractor from using the old style low level code to use usermodel
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1165109 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
17c3ed2223
commit
dd69223e2b
@ -16,22 +16,21 @@
|
|||||||
==================================================================== */
|
==================================================================== */
|
||||||
package org.apache.poi.xslf.extractor;
|
package org.apache.poi.xslf.extractor;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
import org.apache.poi.POIXMLTextExtractor;
|
import org.apache.poi.POIXMLTextExtractor;
|
||||||
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
|
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
|
||||||
import org.apache.poi.openxml4j.opc.OPCPackage;
|
import org.apache.poi.openxml4j.opc.OPCPackage;
|
||||||
import org.apache.poi.xslf.XSLFSlideShow;
|
import org.apache.poi.xslf.XSLFSlideShow;
|
||||||
import org.apache.poi.xslf.usermodel.DrawingParagraph;
|
import org.apache.poi.xslf.usermodel.DrawingParagraph;
|
||||||
import org.apache.poi.xslf.usermodel.XMLSlideShow;
|
import org.apache.poi.xslf.usermodel.XMLSlideShow;
|
||||||
|
import org.apache.poi.xslf.usermodel.XSLFComments;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFCommonSlideData;
|
import org.apache.poi.xslf.usermodel.XSLFCommonSlideData;
|
||||||
|
import org.apache.poi.xslf.usermodel.XSLFNotes;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFRelation;
|
import org.apache.poi.xslf.usermodel.XSLFRelation;
|
||||||
import org.apache.poi.xslf.usermodel.XSLFSlide;
|
import org.apache.poi.xslf.usermodel.XSLFSlide;
|
||||||
import org.apache.xmlbeans.XmlException;
|
import org.apache.xmlbeans.XmlException;
|
||||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTComment;
|
import org.openxmlformats.schemas.presentationml.x2006.main.CTComment;
|
||||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTCommentList;
|
|
||||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesSlide;
|
|
||||||
import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
|
public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
|
||||||
public static final XSLFRelation[] SUPPORTED_TYPES = new XSLFRelation[] {
|
public static final XSLFRelation[] SUPPORTED_TYPES = new XSLFRelation[] {
|
||||||
@ -89,51 +88,50 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
|
|||||||
return getText(slidesByDefault, notesByDefault);
|
return getText(slidesByDefault, notesByDefault);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the requested text from the file
|
* Gets the requested text from the file
|
||||||
* @param slideText Should we retrieve text from slides?
|
* @param slideText Should we retrieve text from slides?
|
||||||
* @param notesText Should we retrieve text from notes?
|
* @param notesText Should we retrieve text from notes?
|
||||||
*/
|
*/
|
||||||
public String getText(boolean slideText, boolean notesText) {
|
public String getText(boolean slideText, boolean notesText) {
|
||||||
StringBuffer text = new StringBuffer();
|
StringBuffer text = new StringBuffer();
|
||||||
|
|
||||||
XSLFSlide[] slides = slideshow.getSlides();
|
XSLFSlide[] slides = slideshow.getSlides();
|
||||||
try {
|
|
||||||
XSLFSlideShow xsl = new XSLFSlideShow(slideshow.getPackage());
|
|
||||||
for (int i = 0; i < slides.length; i++) {
|
|
||||||
CTSlideIdListEntry slideId = slideshow.getCTPresentation().getSldIdLst().getSldIdArray(i);
|
|
||||||
|
|
||||||
// For now, still very low level
|
for (XSLFSlide slide : slides) {
|
||||||
CTNotesSlide notes =
|
try {
|
||||||
xsl.getNotes(slideId);
|
XSLFNotes notes = slide.getNotes();
|
||||||
CTCommentList comments =
|
XSLFComments comments = slide.getComments();
|
||||||
xsl.getSlideComments(slideId);
|
|
||||||
|
|
||||||
if (slideText) {
|
// TODO Do the slide's name
|
||||||
extractText(new XSLFCommonSlideData(slides[i].getXmlObject().getCSld()), text);
|
|
||||||
|
|
||||||
// Comments too for the slide
|
// Do the slide's text if requested
|
||||||
if (comments != null) {
|
if (slideText) {
|
||||||
for (CTComment comment : comments.getCmList()) {
|
extractText(slide.getCommonSlideData(), text);
|
||||||
// TODO - comment authors too
|
|
||||||
// (They're in another stream)
|
|
||||||
text.append(
|
|
||||||
comment.getText() + "\n"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (notesText && notes != null) {
|
// If the slide has comments, do those too
|
||||||
extractText(new XSLFCommonSlideData(notes.getCSld()), text);
|
if (comments != null) {
|
||||||
}
|
for (CTComment comment : comments.getCTCommentsList().getCmList()) {
|
||||||
|
// TODO - comment authors too
|
||||||
|
// (They're in another stream)
|
||||||
|
text.append(
|
||||||
|
comment.getText() + "\n"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return text.toString();
|
// Do the notes if requested
|
||||||
}
|
if (notesText && notes != null) {
|
||||||
|
extractText(notes.getCommonSlideData(), text);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return text.toString();
|
||||||
|
}
|
||||||
|
|
||||||
private void extractText(XSLFCommonSlideData data, StringBuffer text) {
|
private void extractText(XSLFCommonSlideData data, StringBuffer text) {
|
||||||
for (DrawingParagraph p : data.getText()) {
|
for (DrawingParagraph p : data.getText()) {
|
||||||
|
Loading…
Reference in New Issue
Block a user