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();
}
}
}