Hello,
I'm using the HSLF API for some time now, and it works very well, but I have
some questions on some things I can't do. I do'nt know if it's because the
API is (still) incomplete on some areas, or just if I'm not using it well.
My questions are:
- Is it possible to embed Fonts in a PowerPoint file by using the API? It's
possible to do it by using an existing PowerPoint file master, but I would
like to do it when I encounter a Font which does not exist in the
FontCollection. For example is it possible to create a new PPFont "from
scratch" using an existing TTF file, and add it to the collection?
- Is it possible to group Shapes? I tried to use ShapeGroups, but the
resulting PPT file still did not have groups of Shapes
And finally, is it possible to add image data to the slides. I tried the
following approach, but it did not work (no exception, but no image either):
public boolean drawImage(Image image, int dx1, int dy1, int dx2, int
dy2, int sx1, int sy1, int sx2, int sy2, Color color1, ImageObserver
observer) {
Rectangle rectangle = new Rectangle(sx1, sy1, sx2 - sx1, sy2 - sy1);
Shape shape = trans.createTransformedShape(rectangle);
Rectangle rec = shape.getBounds();
addImage(image, rec);
return true;
}
private void addImage(Image image, Rectangle rec) {
SlideShow show = slide.getSlideShow();
if (image instanceof RenderedImage) {
try {
byte[] b = getImageData((RenderedImage)image);
int idx = show.addPicture(b, Picture.PNG);
Picture pict = new Picture(idx);
pict.setAnchor(rec);
slide.addShape(pict);
} catch (IOException e) {
}
}
}
private byte[] getImageData(RenderedImage image) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream(100);
ImageIO.write(image, "png", stream);
stream.close();
return stream.toByteArray();
}
FYI, I have developed a Graphics2D drop-in which draw in a PPT context a
Swing hierarchy, and apart from these problems and other small bugs, it
works well. The project is here: https://sourceforge.net/projects/j661/
Thanks!!
Herve Girod