Apache POI + Felix:XSLF Table 为空

Apache POI + Felix : XSLF Table is empty

我们使用 Apache POI 3.14 从 Sling 内容生成一个 pptx 文档,使用包 org.apache.servicemix.bundles.poi。

在一个简单的独立 Java 应用程序中,使用测试代码,它工作正常。

当我们将此代码打包并部署到 Felix 时,生成的 table 包含一个空单元格。

我发现一些帖子描述了类似的问题,有些帖子要求用 ooxml-schemas 替换 poi-ooxml-schemas,但我想知道它是否能解决我们的问题,因为独立应用程序使用相同的 POI 包比部署到 Felix 的那个。

这是我们使用的代码:

public static void addTableToSlide(XMLSlideShow ppt, XSLFSlide slide) {
  XSLFTable tbl = slide.createTable(1, 1);
  for (int i = 0; i < 9; i++) {
    XSLFTableRow row = tbl.addRow();
    for (int j = 0; j < 9; j++) {
      row.addCell();
    }
  }
  tbl.setAnchor(new Rectangle2D.Double(50, 50, 450, 300));
}

这是在 Felix 中生成的:

<a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table">
  <a:tbl>
    <a:tblPr/>
    <a:tblGrid/>
  </a:tbl>
</a:graphicData>

是什么导致了这个问题,会不会是库之间的冲突?我如何调试它以找出 Felix 中的问题?

这是一个类加载问题,POI 3.16 中将提供解决方法 - 请参阅 Bugzilla 条目 #60226

此外,您可能需要检查 #57857 servicemix 补丁。