我正在尝试在Apache POI中复制一张幻灯片。
根据幻灯片内容,我有三种情况
当POI尝试复制XSLFPictureShape时,我得到NullPointerException(紧随其后的stacktrace)
线程“主”中的异常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(跟在stacktrace之后)
线程“主”中的异常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中复制图片并“按图片”粘贴可消除效果和问题。
答案 0 :(得分:0)
我在原始问题的更新中找到了自己的解决方案:
我发现第2点的NullPointerException问题是由于pptx文件损坏(也许是因为它已使用Mac进行过一次编辑?)
第3点的ClassCastException似乎是由于某些图片上应用了“艺术效果”所致,而Apache POI目前不支持这些图片。在PowerPoint中复制图片并“按图片”粘贴可消除效果和问题。