【问题标题】:Programmatically extracting slides as images from a PowerPoint presentation (.PPT) [closed]以编程方式从 PowerPoint 演示文稿(.PPT)中提取幻灯片作为图像 [关闭]
【发布时间】:2011-04-18 09:02:38
【问题描述】:

给定.ppt 格式的 PowerPoint 演示文稿,以编程方式并仅使用开源软件提取演示文稿中每张幻灯片的图像表示(例如 .jpg.png)的最佳方法是什么?

该应用程序将在 Linux 服务器环境中运行,因此不能安装 Microsoft Office 或 Keynote。

我想以编程方式实现的功能类似于:

  • Keynote 的导出功能 (File > Export... > Pictures > JPEG)
  • PowerPoint 的另存为 JPEG 功能 (Save As > Other Formats > JPEG)

【问题讨论】:

    标签: image language-agnostic ms-office powerpoint openoffice.org


    【解决方案1】:

    你应该试试unoconv。根据man page,“unoconv 是一个命令行实用程序,可以将 OpenOffice 可以导入的任何文件格式转换为 OpenOffice 可以导出的任何文件格式。”

    因此,要将 ppt 转换为 png,您可以这样做:

    unoconv -f png some-slides.ppt
    

    如果失败,您可以尝试来自 Art of Solving 的 JODConverterPyODConverter。例如,您可以从命令行使用 JODConverter:

    java -jar lib/jodconverter-cli-2.2.0.jar document.ppt document.png
    

    【讨论】:

    • 我认为这可能是最好的解决方案。但是您应该知道,这取决于开放式办公室。幸运的是,有 OO 无头,所以你不必乱用 xvfb。
    • 我尝试了 jodconverter,但它给出了 noclassdeffound 错误
    • @MuhammadMuazzam 您是否使用了最新的 JODConverter?似乎最新的源/下载保存在这里:github.com/sbraconnier/jodconverter
    【解决方案2】:

    鉴于您在 Linux 上运行的要求,自动化 OpenOffice.org 可能是最简单的。

    导出为 HTML 将为您提供每张幻灯片质量可配置的 JPEG 或 PNG 图像。

    【讨论】:

      【解决方案3】:

      几年前,我使用Slide Splitter 来满足同样的需求。还可以使用 ppt 幻灯片并导出为 .jpeg。

      【讨论】:

      【解决方案4】:

      Apache POI 是一个 Java 库,但有一个 command-line utility 用于将 PPTX 文件转换为 PNG 文件。

      要运行它,请在库的二进制下载文件夹的根目录中调用此命令:

      java -cp "poi-3.10-FINAL-20140208.jar;poi-ooxml-3.10-FINAL-20140208.jar;poi-ooxml-schemas-3.10-FINAL-20140208.jar;ooxml-lib\dom4j-1.6.1.jar;ooxml-lib\stax-api-1.0.1.jar;ooxml-lib\xmlbeans-2.3.0.jar;lib\commons-codec-1.5.jar;lib\commons-logging-1.1.jar;lib\log4j-1.2.13.jar" org.apache.poi.xslf.util.PPTX2PNG presentation.pptx
      

      它不是 100% 完美的——我注意到它不喜欢艺术字或从 PowerPoint 中裁剪的图像。

      【讨论】:

        【解决方案5】:

        如果可以选择使用 Web API,我会尝试 google docs API。您可以上传 ppt 文档,然后以任何受支持的格式(包括 pdf 和 png)下载回来。

        【讨论】:

          【解决方案6】:

          我们可以使用 imagemagick 将 pptx 转换为 pdf,然后将 pdt 转换为 JPEG 图像。这是在 Ubuntu 上适合我的方法。

          首先我们需要安装几个包:

          apt update && apt install libreoffice imagemagick ghostscript
          

          现在,使用以下命令将 pptx 文件转换为 PDF:

          soffice --headless --convert-to pdf test.pptx
          

          生成的 PDF 文件名为 test.pdf。然后我们就可以使用 imagemagick 将 PDF 转为 jpeg 图片了:

          # you can tweak density and quality to change the quality of generated images.
          convert -density 150 test.pdf -quality 80 output-%3d.jpg
          

          如果您在运行上述命令时遇到错误。编辑/etc/ImageMagick-6/policy.xml 并更改以下行:

          <policy domain="coder" rights="none" pattern="PDF" />
          

          <policy domain="coder" rights="read|write" pattern="PDF" />
          

          参考:此答案基于帖子here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-12-14
            • 2023-03-29
            • 2011-04-02
            • 1970-01-01
            • 2013-06-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多