public InputStream getThumbnail()

in src/main/java/org/apache/sling/thumbnails/internal/providers/SlideShowThumbnailProvider.java [70:104]


    public InputStream getThumbnail(Resource resource) throws IOException {
        if (classLoaderManager != null) {
            Thread.currentThread().setContextClassLoader(classLoaderManager.getDynamicClassLoader());
        }

        SlideShow<?, ?> ppt = null;
        MediaType mt = MediaType.parse(resource.getValueMap()
                .get(thumbnailSupport.getMetaTypePropertyPath(resource.getResourceType()), String.class));
        try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
                InputStream is = resource.adaptTo(InputStream.class)) {
            if (mt.is(MediaType.MICROSOFT_POWERPOINT)) {
                ppt = new HSLFSlideShow(is);
            } else {
                ppt = new XMLSlideShow(is);
            }
            Dimension dim = ppt.getPageSize();
            List<? extends Slide<?, ?>> slides = ppt.getSlides();

            BufferedImage img = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics = img.createGraphics();
            graphics.setPaint(Color.white);
            graphics.fill(new Rectangle2D.Float(0, 0, dim.width, dim.height));

            if (slides != null && !slides.isEmpty()) {
                slides.get(0).draw(graphics);
            }

            ImageIO.write(img, OutputFileFormat.PNG.toString(), baos);
            return new ByteArrayInputStream(baos.toByteArray());
        } finally {
            if (ppt != null) {
                ppt.close();
            }
        }
    }