import org.apache.poi.xslf.usermodel.XSLFSlide; //導入方法依賴的package包/類
/**
* @see org.apache.poi.xslf.extractor.XSLFPowerPointExtractor#getText()
*/
protected void buildXHTML(XHTMLContentHandler xhtml) throws SAXException,
IOException {
XMLSlideShow slideShow = (XMLSlideShow) extractor.getDocument();
XSLFSlide[] slides = slideShow.getSlides();
for (XSLFSlide slide : slides) {
String slideDesc;
if (slide.getPackagePart() != null
&& slide.getPackagePart().getPartName() != null) {
slideDesc = getJustFileName(slide.getPackagePart().getPartName()
.toString());
slideDesc += "_";
} else {
slideDesc = null;
}
// slide
extractContent(slide.getShapes(), false, xhtml, slideDesc);
// slide layout which is the master sheet for this slide
XSLFSheet slideLayout = slide.getMasterSheet();
extractContent(slideLayout.getShapes(), true, xhtml, null);
// slide master which is the master sheet for all text layouts
XSLFSheet slideMaster = slideLayout.getMasterSheet();
extractContent(slideMaster.getShapes(), true, xhtml, null);
// notes (if present)
XSLFSheet slideNotes = slide.getNotes();
if (slideNotes != null) {
extractContent(slideNotes.getShapes(), false, xhtml, slideDesc);
// master sheet for this notes
XSLFSheet notesMaster = slideNotes.getMasterSheet();
extractContent(notesMaster.getShapes(), true, xhtml, null);
}
// comments (if present)
XSLFComments comments = slide.getComments();
if (comments != null) {
for (CTComment comment : comments.getCTCommentsList().getCmList()) {
xhtml.element("p", comment.getText());
}
}
}
if (Config.inst().getProp(ConfigBool.ENABLE_IMAGE_OCR)) {
TikaImageHelper helper = new TikaImageHelper(metadata);
try {
List pictures = slideShow.getAllPictures();
for (XSLFPictureData picture : pictures) {
ByteArrayInputStream imageData = new ByteArrayInputStream(
picture.getData());
BufferedImage image = ImageIO.read(imageData);
helper.addImage(image);
helper.addTextToHandler(xhtml);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (extractor != null) {
extractor.close();
}
if (helper != null) {
helper.close();
}
}
}
}