List of usage examples for org.apache.poi.xslf.usermodel XMLSlideShow getSlides
@Override
public List<XSLFSlide> getSlides()
From source file:com.opensearchserver.extractor.parser.Pptx.java
License:Apache License
/** * Declined from XSLFPowerPointExtractor.java * // www .ja v a 2 s. c om * @param pptSlideShow */ private void extractSides(XMLSlideShow slideshow) { XSLFSlide[] slides = (XSLFSlide[]) slideshow.getSlides(); XSLFCommentAuthors commentAuthors = slideshow.getCommentAuthors(); for (XSLFSlide slide : slides) { // One document per slide ParserDocument result = getNewParserDocument(); XSLFNotes notes = slide.getNotes(); XSLFComments comments = slide.getComments(); XSLFSlideLayout layout = slide.getSlideLayout(); XSLFSlideMaster master = layout.getSlideMaster(); // TODO Do the slide's name // (Stored in docProps/app.xml) // Do the slide's text result.add(SLIDES, extractText(slide.getCommonSlideData(), false)); result.add(LANG_DETECTION, languageDetection(SLIDES, 10000)); // If requested, get text from the master and it's layout if (layout != null) { result.add(MASTER, extractText(layout.getCommonSlideData(), true)); } if (master != null) { result.add(MASTER, extractText(master.getCommonSlideData(), true)); } // If the slide has comments, do those too if (comments != null) { for (CTComment comment : comments.getCTCommentsList().getCmList()) { StringBuilder sbComment = new StringBuilder(); // Do the author if we can if (commentAuthors != null) { CTCommentAuthor author = commentAuthors.getAuthorById(comment.getAuthorId()); if (author != null) { sbComment.append(author.getName()); sbComment.append(": "); } } // Then the comment text, with a new line afterwards sbComment.append(comment.getText()); sbComment.append("\n"); if (sbComment.length() > 0) result.add(COMMENTS, sbComment.toString()); } } // Do the notes if requested if (notes != null) { result.add(NOTES, extractText(notes.getCommonSlideData(), false)); } } }
From source file:com.qwazr.extractor.parser.Pptx.java
License:Apache License
/** * Declined from XSLFPowerPointExtractor.java * * @param slideshow/*from w ww.j a va 2 s .c o m*/ */ private void extractSides(XMLSlideShow slideshow) { List<XSLFSlide> slides = slideshow.getSlides(); XSLFCommentAuthors commentAuthors = slideshow.getCommentAuthors(); for (XSLFSlide slide : slides) { // One document per slide ParserDocument result = getNewParserDocument(); XSLFNotes notes = slide.getNotes(); XSLFComments comments = slide.getComments(); XSLFSlideLayout layout = slide.getSlideLayout(); XSLFSlideMaster master = layout.getSlideMaster(); // TODO Do the slide's name // (Stored in docProps/app.xml) // Do the slide's text result.add(SLIDES, extractText(slide.getCommonSlideData(), false)); result.add(LANG_DETECTION, languageDetection(SLIDES, 10000)); // If requested, get text from the master and it's layout if (layout != null) { result.add(MASTER, extractText(layout.getCommonSlideData(), true)); } if (master != null) { result.add(MASTER, extractText(master.getCommonSlideData(), true)); } // If the slide has comments, do those too if (comments != null) { for (CTComment comment : comments.getCTCommentsList().getCmList()) { StringBuilder sbComment = new StringBuilder(); // Do the author if we can if (commentAuthors != null) { CTCommentAuthor author = commentAuthors.getAuthorById(comment.getAuthorId()); if (author != null) { sbComment.append(author.getName()); sbComment.append(": "); } } // Then the comment text, with a new line afterwards sbComment.append(comment.getText()); sbComment.append("\n"); if (sbComment.length() > 0) result.add(COMMENTS, sbComment.toString()); } } // Do the notes if requested if (notes != null) { result.add(NOTES, extractText(notes.getCommonSlideData(), false)); } } }
From source file:com.qwazr.library.poi.PptxParser.java
License:Apache License
/** * Declined from XSLFPowerPointExtractor.java * * @param slideshow/*from w w w.j a v a2 s . c o m*/ * @param resultBuilder */ private void extractSides(final XMLSlideShow slideshow, final ParserResultBuilder resultBuilder) { final List<XSLFSlide> slides = slideshow.getSlides(); final XSLFCommentAuthors commentAuthors = slideshow.getCommentAuthors(); for (XSLFSlide slide : slides) { // One document per slide final ParserFieldsBuilder result = resultBuilder.newDocument(); final XSLFNotes notes = slide.getNotes(); final XSLFComments comments = slide.getComments(); final XSLFSlideLayout layout = slide.getSlideLayout(); final XSLFSlideMaster master = layout.getSlideMaster(); // TODO Do the slide's name // (Stored in docProps/app.xml) // Do the slide's text final String slideText = extractText(slide.getCommonSlideData(), false); result.add(SLIDES, slideText); result.add(CONTENT, slideText); // If requested, get text from the master and it's layout if (layout != null) { final String text = extractText(layout.getCommonSlideData(), true); result.add(MASTER, text); result.add(CONTENT, text); } if (master != null) { final String text = extractText(master.getCommonSlideData(), true); result.add(MASTER, text); result.add(CONTENT, text); } // If the slide has comments, do those too if (comments != null) { for (CTComment comment : comments.getCTCommentsList().getCmList()) { final StringBuilder sbComment = new StringBuilder(); // Do the author if we can if (commentAuthors != null) { CTCommentAuthor author = commentAuthors.getAuthorById(comment.getAuthorId()); if (author != null) { sbComment.append(author.getName()); sbComment.append(": "); } } // Then the comment text, with a new line afterwards sbComment.append(comment.getText()); sbComment.append("\n"); if (sbComment.length() > 0) { final String text = sbComment.toString(); result.add(COMMENTS, text); result.add(CONTENT, text); } } } // Do the notes if requested if (notes != null) { final String text = extractText(notes.getCommonSlideData(), false); result.add(NOTES, text); result.add(CONTENT, text); } result.add(LANG_DETECTION, languageDetection(result, CONTENT, 10000)); } }
From source file:ddf.catalog.transformer.input.pptx.PptxInputTransformer.java
License:Open Source License
/** * If the slide show doesn't contain any slides, then return null. Otherwise, return jpeg * image data of the first slide in the deck. * * @param slideShow//w w w. ja v a2 s . co m * @return jpeg thumbnail or null if thumbnail can't be created * @throws IOException */ private byte[] generatePptxThumbnail(XMLSlideShow slideShow) throws IOException { if (slideShow.getSlides().isEmpty()) { LOGGER.debug("the powerpoint file does not contain any slides, skipping thumbnail generation"); return null; } Dimension pgsize = slideShow.getPageSize(); int largestDimension = (int) Math.max(pgsize.getHeight(), pgsize.getWidth()); float scalingFactor = IMAGE_HEIGHTWIDTH / largestDimension; int scaledHeight = (int) (pgsize.getHeight() * scalingFactor); int scaledWidth = (int) (pgsize.getWidth() * scalingFactor); BufferedImage img = new BufferedImage(scaledWidth, scaledHeight, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = img.createGraphics(); try { graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); graphics.scale(scalingFactor, scalingFactor); slideShow.getSlides().get(0).draw(graphics); try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { ImageIOUtil.writeImage(img, FORMAT_NAME, outputStream, RESOLUTION_DPI, IMAGE_QUALITY); return outputStream.toByteArray(); } } catch (RuntimeException e) { if (e.getCause() instanceof javax.imageio.IIOException) { LOGGER.debug("unable to generate thumbnail for PPTX file", e); } else { throw e; } } finally { graphics.dispose(); } return null; }
From source file:easyoffice.powerpoint.PPTMaker.java
private static void processSlides(XMLSlideShow ppt) { ArrayList<Slide> replacementData = generateSlides(); XSLFSlide templateSlide = ppt.getSlides().get(TEMPLATE_SLIDE_INDEX); boolean somethingReplaced = false; for (Slide slide : replacementData) { XSLFSlide copiedSlide = copySlide(ppt, templateSlide); List<XSLFShape> slideShapes = copiedSlide.getShapes(); for (XSLFShape slideShape : slideShapes) { if (slideShape instanceof XSLFTextShape) { XSLFTextShape textShape = (XSLFTextShape) slideShape; for (SlideText slideText : slide.replacementData) { if (textShape.getText().contains(String.format(STRING_FORMAT, slideText.key))) { replaceContent(textShape, slideText); somethingReplaced = true; }/*from www .j a va 2 s . c o m*/ } } } } if (!somethingReplaced) { System.out.println(Strings.NOTHING_REPLACED(TEMPLATE_SLIDE_INDEX)); System.exit(0); } }
From source file:mj.ocraptor.extraction.tika.parser.microsoft.ooxml.XSLFPowerPointExtractorDecorator.java
License:Apache License
/** * @see org.apache.poi.xslf.extractor.XSLFPowerPointExtractor#getText() *///from w w w . ja v a 2s.c o m 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<XSLFPictureData> 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(); } } } }
From source file:openslide.module.webserver.PPTX2SVG.java
License:Apache License
/** * parse file to svg document/*from w ww .java2 s . co m*/ * @param file_name -required- {string} fullpath file * @return slide_list * @throws Exception */ public static ArrayList<String> parse(String file_name) throws Exception { String file = file_name; ArrayList<String> slide_list = new ArrayList<String>(); System.out.println("Processing " + file); // read the .pptx file XMLSlideShow ppt = new XMLSlideShow(OPCPackage.open(file)); Dimension pgsize = ppt.getPageSize(); // convert each slide into a .svg file XSLFSlide[] slide = ppt.getSlides(); for (int i = 0; i < slide.length; i++) { // Create initial SVG DOM DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation(); Document doc = domImpl.createDocument("http://www.w3.org/2000/svg", "svg", null); //Use Batik SVG Graphics2D driver SVGGraphics2D graphics = new SVGGraphics2D(doc); graphics.setRenderingHint(XSLFRenderingHint.IMAGE_RENDERER, new WMFImageRender()); graphics.setSVGCanvasSize(pgsize); String title = slide[i].getTitle(); System.out.println("Rendering slide " + (i + 1) + (title == null ? "" : ": " + title)); // draw stuff. All the heavy-lifting happens here slide[i].draw(graphics); // save the result. int sep = file.lastIndexOf("."); String fname = file.substring(0, sep == -1 ? file.length() : sep) + "-" + (i + 1) + ".svg"; slide_list.add(fname); OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(fname), "UTF-8"); DOMSource domSource = new DOMSource(graphics.getRoot()); StreamResult streamResult = new StreamResult(out); TransformerFactory tf = TransformerFactory.newInstance(); Transformer serializer = tf.newTransformer(); serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); serializer.setOutputProperty(OutputKeys.INDENT, "yes"); serializer.transform(domSource, streamResult); out.flush(); out.close(); } System.out.println("Done"); return slide_list; }
From source file:org.apache.tika.parser.microsoft.ooxml.XSLFPowerPointExtractorDecorator.java
License:Apache License
/** * @see org.apache.poi.xslf.extractor.XSLFPowerPointExtractor#getText() *//*ww w . j a v a 2s . c om*/ protected void buildXHTML(XHTMLContentHandler xhtml) throws SAXException, IOException { XMLSlideShow slideShow = (XMLSlideShow) extractor.getDocument(); XSLFCommentAuthors commentAuthors = slideShow.getCommentAuthors(); List<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 content xhtml.startElement("div", "class", "slide-content"); extractContent(slide.getShapes(), false, xhtml, slideDesc); xhtml.endElement("div"); // slide layout which is the master sheet for this slide xhtml.startElement("div", "class", "slide-master-content"); XSLFSlideLayout slideLayout = slide.getMasterSheet(); extractContent(slideLayout.getShapes(), true, xhtml, null); xhtml.endElement("div"); // slide master which is the master sheet for all text layouts XSLFSheet slideMaster = slideLayout.getMasterSheet(); extractContent(slideMaster.getShapes(), true, xhtml, null); // notes (if present) XSLFNotes slideNotes = slide.getNotes(); if (slideNotes != null) { xhtml.startElement("div", "class", "slide-notes"); extractContent(slideNotes.getShapes(), false, xhtml, slideDesc); // master sheet for this notes XSLFNotesMaster notesMaster = slideNotes.getMasterSheet(); extractContent(notesMaster.getShapes(), true, xhtml, null); xhtml.endElement("div"); } // comments (if present) XSLFComments comments = slide.getComments(); if (comments != null) { StringBuilder authorStringBuilder = new StringBuilder(); for (int i = 0; i < comments.getNumberOfComments(); i++) { authorStringBuilder.setLength(0); CTComment comment = comments.getCommentAt(i); xhtml.startElement("p", "class", "slide-comment"); CTCommentAuthor cta = commentAuthors.getAuthorById(comment.getAuthorId()); if (cta != null) { if (cta.getName() != null) { authorStringBuilder.append(cta.getName()); } if (cta.getInitials() != null) { if (authorStringBuilder.length() > 0) { authorStringBuilder.append(" "); } authorStringBuilder.append("(" + cta.getInitials() + ")"); } if (comment.getText() != null && authorStringBuilder.length() > 0) { authorStringBuilder.append(" - "); } if (authorStringBuilder.length() > 0) { xhtml.startElement("b"); xhtml.characters(authorStringBuilder.toString()); xhtml.endElement("b"); } } xhtml.characters(comment.getText()); xhtml.endElement("p"); } } } }
From source file:org.joeffice.presentation.actions.ChooseLayoutAction.java
License:Apache License
@Override public void actionPerformed(ActionEvent e) { SlidesTopComponent currentTopComponent = OfficeTopComponent.getSelectedComponent(SlidesTopComponent.class); if (currentTopComponent != null) { XMLSlideShow currentPresentation = currentTopComponent.getPresentation(); int selectedSlide = currentTopComponent.getSelectedSlide(); XSLFSlide slide = currentPresentation.getSlides()[selectedSlide]; // not possible to change the layout in Apache POI }//from w w w.j a v a 2s . c o m }
From source file:org.joeffice.presentation.actions.RemoveSlideAction.java
License:Apache License
@Override public void actionPerformed(ActionEvent e) { SlidesTopComponent currentTopComponent = OfficeTopComponent.getSelectedComponent(SlidesTopComponent.class); if (currentTopComponent != null) { XMLSlideShow presentation = currentTopComponent.getPresentation(); int slideIndex = currentTopComponent.getSelectedSlide(); presentation.removeSlide(slideIndex); removeSlideFromPanel(slideIndex, (JPanel) currentTopComponent.getMainComponent()); currentTopComponent.getDataObject().setModified(true); if (slideIndex >= presentation.getSlides().length) { currentTopComponent.setSelectedSlide(slideIndex - 1); } else {// www . ja v a 2 s. c o m currentTopComponent.setSelectedSlide(slideIndex); } } }