当前位置: 首页 > 知识库问答 >
问题:

如何使用Apache POI正确复制粘贴幻灯片

侯向文
2023-03-14

我正在尝试在Apache POI中复制一张幻灯片。

根据幻灯片内容,我有三种情况

>

  • 复制成功(对于某些带有XSLFPictureShape对象的幻灯片)
  • 当POI试图复制XSLFPictureShape时,我得到NullPointerException(堆栈跟踪)

    线程 “main” java.lang.NullPointerException at org.apache.poi.xslf.usermodel.XSLFSheet.importBlip(XSLFSheet.java:651) at org.apache.poi.xslf.usermodel.XSLFPICTURESHAPE.copy(XSLFPictureShape.java:202) at org.apache.poi.xslf.usermodel.XSLFSheet.wipeAndReitialize(XSLFSheet.java:452) at org.apache.poi.xslf.usermodel.XSLFSheet.importContent(XSLFSheet.java:431) 在 org.apache.poi.xslf.usermodel.XSLFSlide.importContent(XSLFSlide.java:294) ...

    我收到类投射例外,而 POI 正在尝试复制 XSLF 像素形状(堆栈跟踪如下)

    线程"main"java.lang.ClassCastException中的异常:org.apache.poi.ooxml.POIXMLDocumentPart不能org.apache.poi.xslf.usermodel.XSLFPictureDataorg.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编辑过一次?)

    我现在唯一真正的问题是第三点

    更新

    第三点的ClassCastException似乎是由于一些应用了“艺术效果”的图片,这些图片目前不受Apache POI的支持。在PowerPoint中复制图片并粘贴“作为图像”可以消除效果和问题。

  • 共有1个答案

    司寇安宜
    2023-03-14

    我已经找到了我自己的asnwer,如原始问题的更新中所述:

    我发现#2点的NullPointerException问题是由于一个损坏的pptx文件(可能是因为它已经用mac编辑过一次?)

    第三点的ClassCastException似乎是由于一些应用了“艺术效果”的图片,这些图片目前不受Apache POI的支持。在PowerPoint中复制图片并粘贴“作为图像”可以消除效果和问题。

     类似资料:
    • 问题内容: 我正在尝试2个替代方法: 忽略右键 忽略+ ,+ 这是我的代码: 这是我的HTML: 该功能有效,但不起作用。 问题答案: 你不能 您可以尝试阻止某些矢量(例如,使右键单击更加困难的黑客,拦截+ ,使其难以选择文本)……但是它们只能起到某种作用,并且不可能阻止所有矢量(编辑->复制) ?查看源代码??等…)。 如果您想保护内容免受技术含量较低的用户的侵害,则可以采用这些方法……但是,正

    • 我可以假设Mac OS X剪贴板图像数据是png吗? 当我尝试MIME检测剪贴板数据时,它返回。 这会导致每个浏览器下载图像而不是显示图像。 如果我强制将内容类型设置为image/png,一切看起来都很好,但我想知道是否有一种方法可以让我不必做出这样的假设? 我用https://github.com/broofa/node-mime检测MIME类型。

    • 本文向大家介绍使用impress.js制作幻灯片,包括了使用impress.js制作幻灯片的使用技巧和注意事项,需要的朋友参考一下 上周看到一个朋友做了很炫的缩放式幻灯片,可能因为对此知识了解的不多,找了好久才找到几个web幻灯片工具。通过筛选决定用Geek的 impress.js 。 impress.js是一款新兴的幻灯工具,它的效果类似Prezi,但是拥有3D的功能,而且是在MIT&GPL协议

    • 问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的

    • 亲爱的大家: 我正在使用Apache POI,我想复制一张幻灯片,其中包含代码中的几个图表。 下面的代码(灵感来源于https://poi.apache.org/slideshow/xslf-cookbook.html#Merge)当幻灯片上没有图表时工作正常。 不幸的是,使用这种方法似乎没有复制图表:当我尝试打开生成的文件时,Powerpoint检测到问题,尝试修复它,但失败了,我得到了空幻灯片

    • 现在我生成了一组幻灯片,当我以pps形式打开它时,它不会在幻灯片之间转换,除非我在微软的powerpoint编辑器中打开它(我可以在其中添加转换)并保存它。然后它可以正常转换。 我认为这与幻灯片母版有关:https://poi.apache.org/apidocs/org/apache/poi/xslf/usermodel/XSLFSlideMaster.html但我不确定它是如何使用的,因为它说