[英]Read / Write very big pptx files with POI
我们在项目中使用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
并添加/修改rId内容
您可以尝试将POI之外的单独幻灯片与以下内容合并:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.