7

我正在尝试使用 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 的背景、布局的背景和幻灯片的背景上调用它,都会导致相同的错误。

4

1 回答 1

1

这已通过#59702在POI 3.15-beta2中修复。

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

于 2017-02-11T12:21:03.037 回答