我正在尝试构建一个将ppt/pptx文件转换为HTML格式的相当粗糙的工具。
我发现不幸的是,apache poi没有提供用于使用电源点文件的统一编程模型,并且必须编写用于解析每种格式的代码。
我觉得pptx文件的支持比ppt支持更有限。 我面临的一个问题是获取有关pptx幻灯片的背景(颜色,图案,背景图像)的信息。
我发现XSLFBackground(pptx api)类远比其对应的Background类(ppt api)有限。
有没有人设法使用apache poi获取有关pptx幻灯片背景的信息?
也可以有人请指点我在这个问题上的一些很好的资源。我发现Apache poi javadoc几乎不可用,poi网站上的示例仅涵盖基本功能。
此致的Sergiu如何从pptx幻灯片使用apache poi获取背景数据
3
A
回答
4
背景元素的含量在Office Open Schema描述 - 检查zip-link at the bottom和PML-slide.xsd内部。
随着模式的掌握,您将了解usermodel接口下面的XML bean。
对于首发,这里是读书的背景图像,并导出幻灯片png格式的例子(也许有用你的HTML出口?):
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URL;
import org.apache.poi.xslf.usermodel.*;
import org.openxmlformats.schemas.presentationml.x2006.main.CTBackground;
public class PptxBackground {
public static void main(String[] args) throws Exception {
// sorry for the content, but it was one of the first non-commercial google matches ...
URL url = new URL("http://newkilpatrickblog.typepad.com/files/sunday_june_03_2012_trinity_and_majesty_communion.pptx");
InputStream is = url.openStream();
XMLSlideShow ss = new XMLSlideShow(is);
is.close();
XSLFSlide sld = ss.getSlides()[0];
XSLFBackground bg = sld.getBackground();
CTBackground xmlBg = (CTBackground)bg.getXmlObject();
String relId = xmlBg.getBgPr().getBlipFill().getBlip().getEmbed();
XSLFPictureData pic = (XSLFPictureData)sld.getRelationById(relId);
String filename = pic.getFileName();
byte fileBytes[] = pic.getData();
/***** or convert the slides to images ****/
double zoom = 2; // magnify it by 2
AffineTransform at = new AffineTransform();
at.setToScale(zoom, zoom);
Dimension pgsize = ss.getPageSize();
XSLFSlide slides[] = ss.getSlides();
for (int i = 0; i < slides.length; i++) {
BufferedImage img = new BufferedImage((int)Math.ceil(pgsize.width*zoom), (int)Math.ceil(pgsize.height*zoom), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = img.createGraphics();
graphics.setTransform(at);
graphics.setPaint(Color.white);
graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width, pgsize.height));
slides[i].draw(graphics);
FileOutputStream out = new FileOutputStream("slide-" + (i+1) + ".png");
javax.imageio.ImageIO.write(img, "png", out);
out.close();
}
}
}
+0
的背景属性,感谢kiwiwings,这确实是一个很好的解决方案。尽管如此,我希望我能像XSLFBackground.draw那样简单一些,将背景保存在单独的图像中。 –
相关问题
- 1. 如何使用apache poi检索pptx幻灯片名称
- 2. 如何将背景图片添加到apache poi生成的幻灯片中?
- 3. 使用Java从PowerPoint幻灯片获取背景图像
- 4. 如何从ppt,pptx文件中提取文本除了页脚,使用apache poi幻灯片编号?
- 5. 背景图片幻灯片?
- 6. 幻灯片背景图片
- 7. 幻灯片背景图片
- 8. 如何通过Apache POI使用java获取幻灯片编号API
- 9. jquery幻灯片使用背景图像
- 10. jQuery的背景幻灯片
- 11. JQuery背景幻灯片
- 12. 动态背景幻灯片
- 13. Css背景幻灯片
- 14. 背景幻灯片 - jquery
- 15. jquery背景幻灯片
- 16. 背景全屏幻灯片
- 17. div背景幻灯片
- 18. 用apache poi从pptx中提取图像
- 19. 如何使用apache poi获取单元格的背景颜色?
- 20. 如何使用CSS /全屏幻灯片获取多个旋转背景覆盖
- 21. 保存幻灯片的背景图片
- 22. 背景图片jQuery幻灯片
- 23. 幻灯片背景图片不工作
- 24. CSS/JS幻灯片的背景图片
- 25. 使用python-pptx将幻灯片标题添加到幻灯片上
- 26. 有关使用Apache POI的幻灯片笔记
- 27. 使用Apache POI将注释添加到Powerpoint幻灯片
- 28. Poi幻灯片格式化
- 29. 使用Python获得pptx文件幻灯片的标题
- 30. jquery cycle2:如何通过幻灯片编号获取幻灯片
您是否在寻找的背景属性形状或页面主幻灯片中定义的页面的背景? – kiwiwings
我正在寻找个人幻灯片 –