我尝试使用Apache POI XSLF库为pptx文件设置背景填充颜色。我的代码如下所示:
XSLFSlideMaster defaultMaster = ppt.getSlideMasters().get(0);
XSLFSlideLayout layout = defaultMaster.getLayout(SlideLayout.BLANK);
XSLFBackground background = layout.getBackground();
background.setFillColor(Color.BLACK);
导致
Exception in thread "main" java.lang.IllegalStateException: CTShapeProperties was not found.
at org.apache.poi.xslf.usermodel.XSLFShape.getSpPr(XSLFShape.java:240)
at org.apache.poi.xslf.usermodel.XSLFSimpleShape.setFillColor(XSLFSimpleShape.java:549)
我试过在SlideMaster的背景,布局背景和幻灯片的背景上调用它,所有这些都会导致同样的错误。
答案 0 :(得分:1)
通过POI 3.15-beta2在#59702修正了此问题。
OOXml属性或POI实现或xmlbeans模式的“问题”是,类似属性(如颜色)存储在不同的模式类型下面,旧代码未覆盖那些父节点。 该补丁引入了代理来包装这些差异,而XSLF用户模型方法现在可以更加统一。