【发布时间】:2018-11-20 21:31:44
【问题描述】:
我正在尝试在 Apache POI 中复制一张幻灯片。
根据幻灯片内容我有三种情况
- 复制成功(对于某些带有 XSLFPictureShape 对象的幻灯片)
-
当 POI 尝试复制 XSLFPictureShape 时出现 NullPointerException(堆栈跟踪如下)
线程“main”中的异常 java.lang.NullPointerException 在 org.apache.poi.xslf.usermodel.XSLFSheet.importBlip(XSLFSheet.java:651) 在 org.apache.poi.xslf.usermodel.XSLFPictureShape.copy(XSLFPictureShape.java:202) 在 org.apache.poi.xslf.usermodel.XSLFSheet.wipeAndReinitialize(XSLFSheet.java:452) 在 org.apache.poi.xslf.usermodel.XSLFSheet.importContent(XSLFSheet.java:431) 在 org.apache.poi.xslf.usermodel.XSLFSlide.importContent(XSLFSlide.java:294) ...
-
我在 POI 尝试复制 XSLFPictureShape 时遇到 ClassCastException(堆栈跟踪如下)
线程“main”java.lang.ClassCastException 中的异常:org.apache.poi.ooxml.POIXMLDocumentPart 无法转换为 org.apache.poi.xslf.usermodel.XSLFPictureData 在 org.apache.poi.xslf.usermodel.XSLFSheet.importBlip(XSLFSheet.java:651) 在 org.apache.poi.xslf.usermodel.XSLFPictureShape.copy(XSLFPictureShape.java:223) 在 org.apache.poi.xslf.usermodel.XSLFSheet.wipeAndReinitialize(XSLFSheet.java:452) 在 org.apache.poi.xslf.usermodel.XSLFSheet.importContent(XSLFSheet.java:431) 在 org.apache.poi.xslf.usermodel.XSLFSlide.importContent(XSLFSlide.java:294) ...
我做错了什么?
更新
我发现第 2 点的 NullPointerException 问题是由于 pptx 文件损坏(可能是因为它已经用 mac 编辑过一次?)
我现在唯一真正的问题是第 3 点的问题
更新
似乎第 3 点的 ClassCastException 是由于某些应用了“艺术效果”的图片造成的,Apache POI 目前不支持这些图片。复制 PowerPoint 中的图片并“作为图像”粘贴即可消除效果和问题。
【问题讨论】:
标签: apache-poi