我们在项目中使用Apache POI(版本3.9)来创建PowerPoint(pptx)文件。然而,其中一些变得非常大(每张幻灯片上有很多形状的2000+幻灯片),因此这一代产生GC overhead limit exceeded
错误。
堆空间大小不在我们的控制范围内,因为我们只为RCP“父”应用程序开发插件。
有没有办法编写(和阅读)这样的大文件?我们使用Excel文档的流API非常成功,但pptx没有流API。
我的第一个想法是将大文件(在创建时)拆分成可用的小块。但是,无法将这些文件合并到一个大文件中(因为POI现在读取大文件会再次出现GC错误)
我搜索了很多没有成功的好解决方案;不幸的是,pptx支持目前仅处于POI的Beta状态。
有人在这里有建议吗?
我的解决方案: 可悲的是,我无法找到一个解决方案,我不需要进行大量的xml编辑。对于所有具有相同问题的人来说,一个小的路线图将B的内容合并到演示文稿A
中Content_Types.xml
和presentations.xml
presentations.xml
中的新条目添加到presentations.xml.rels
slideX.xml.rels
,以便他们引用正确的内容基本上确保将包含用户生成内容(幻灯片,备注,布局)的所有文件复制到A中,并重命名以避免冲突。然后搜索所有*.xml.rels
+ presentation.xml
+ content_types.xml
并添加/修改内容
答案 0 :(得分:2)
您可以尝试将POI之外的单独幻灯片与以下内容合并: