使用Apache POI XSLF尝试setFillColor时出现IllegalStateException

时间:2016-08-23 17:43:41

标签: apache-poi xslf

我尝试使用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的背景,布局背景和幻灯片的背景上调用它,所有这些都会导致同样的错误。

1 个答案:

答案 0 :(得分:1)

通过POI 3.15-beta2#59702修正了此问题。

OOXml属性或POI实现或xmlbeans模式的“问题”是,类似属性(如颜色)存储在不同的模式类型下面,旧代码未覆盖那些父节点。 该补丁引入了代理来包装这些差异,而XSLF用户模型方法现在可以更加统一。