提问者:小点点

如何使用ColdFusion从PowerPoint文件中提取幻灯片注释


我有一个. PPT (PowerPoint,可转换为ODP或PPTX)文件,每张幻灯片上都有演讲者注释。我想将整个演示文稿提取为动态内容,这样我就可以创建一个演讲者备忘单,在我讲话时在手机或桌子上运行(幻灯片缩略图和演讲者注释)。我经常这样做,以至于讨厌手工操作。

这几乎很容易

我还尝试了< code >

有没有办法从冷融合中的PowerPoint文件中获取笔记?


共3个答案

匿名用户

最简单的解决方案:

将PowerPoint演示文稿转换为OpenOffice ODP格式。那是一个压缩文件。CFML可以解压缩它,里面有一个content.xml文件,其中包含幻灯片和笔记,所以CFML可以从该格式中提取笔记。

考虑到CFDOCUMENT功能,ColdFusion甚至可以为您将PPT转换为ODP?

匿名用户

<罢工> 在CF中没有办法直接做到这一点,可以通过下降到底层Java来做到这一点。 我接受更正。上使用showNotes属性

作为替代方案,或者如果由于某种原因不起作用,您应该能够使用Apache POI来执行此操作,尽管您可能需要使用比您的coldFusion版本更新版本的poi,这可能需要一些额外的工作。

public static LinkedList<String> getNotes(String filePath) {
   LinkedList<String> results = new LinkedList<String>();

   // read the powerpoint
   FileInputStream fis = new FileInputStream(filePath);
   SlideShow slideShow = new SlideShow(is);
   fis.close();

   // get the slides
   Slide[] slides = ppt.getSlides();

   // loop over the slides
   for (Slide slide : slides) {

      // get the notes for this slide.
      Notes notes = slide.getNotesSheet();

      // get the "text runs" that are part of this slide.
      TextRun[] textRuns = notes.getTextRuns();

      // build a string with the text from all the runs in the slide.
      StringBuilder sb = new StringBuilder();
      for (TextRun textRun : textRuns) {
         sb.append(textRun.getRawText());
      }

      // add the resulting string to the results.
      results.add(sb.toString());
   }

   return results;
}

继续复杂的格式可能是一个挑战(项目符号列表、粗体、斜体、链接、颜色等),因为您必须更深入地挖掘文本运行和相关的应用编程接口,并了解如何生成超文本标记语言。

匿名用户

CFPRESENTATION(至少从第9版开始)确实有一个showNotes属性,但您仍然需要解析输出。根据输出的标记,jQuery会在短时间内抓取您想要的内容。