【问题标题】:Powerpoint PPT to JPG or PNG Image conversion using PHP使用 PHP 将 Powerpoint PPT 转换为 JPG 或 PNG 图像
【发布时间】:2012-03-21 20:50:58
【问题描述】:

我需要在 Linux 上将单个 Powerpoint (PPT) 幻灯片/文件转换为 JPG 或 PNG 格式,但到目前为止还没有找到任何成功的方法。我听说可以通过 php 使用 open office 来完成,但没有找到任何示例或有用的文档。我也会考虑用 python 或 java 来做,但我不确定要走哪条路。

我知道可以在 Windows 服务器上使用 COM 来完成,但如果可能的话,我真的想避免这样做。

感激地收到任何想法/指针。 (是的,我在发布之前已经搜索了该网站和其他网站!)

提前致谢,

罗伯·甘利

【问题讨论】:

    标签: php linux powerpoint openoffice.org


    【解决方案1】:

    快速回答(2 步):

    ## First converts your presentation to PDF
    unoconv -f pdf presentation.ppt
    ## Then convert your PDF to jpg
    convert presentation.pdf presentation_%03d.jpg
    

    然后瞧。

    再解释一下:

    我已经有同样的需求了。将一组幻灯片幻灯片转换为一组图像。我还没有找到一个工具来做到这一点。但我发现 unoconv 可以将 libreoffice 格式转换为其他格式,包括 jpg、png 和 PDF。唯一的缺点是 unoconv 仅将一张幻灯片转换为 jpg/png 文件,但在转换为 PDF 时,它会将整个演示文稿转换为多页 PDF 文件。所以答案是将PPT转换为PDF,并使用imagemagick的转换,将多页PDF转换为一组图像。

    Unoconv 在 Ubuntu 发行版中分发

    apt-get install unoconv
    

    convert 是随 imagemagick 包分发的

    apt-get install imagemagick
    

    In my blog there is an entry about this

    【讨论】:

    • convert 正确地进行了转换,但 unoconv 以像素完美格式失败。必须说我的pptx 重命名为ppt 所以unoconv 读取它-IDK 如果这是问题的根源,暂时将pptx 手动导出到pdf 然后有imagemagickconvert 完成剩下的工作。
    • 我认为 unoconv 的问题在于无法进行良好的字体替换。在此处打开了相关问题:askubuntu.com/questions/589799/…
    • 从 pdf 转换为 png 时如何避免质量下降?
    【解决方案2】:

    这可以通过 PHP 使用 3d 派对库 (Aspose.Slides) 完成。它适用于 .ppt 和 .pptx,而且速度极快。

    这是PHP中的相关代码:

    $runtime->RegisterAssemblyFromFile("libraries/_bin/aspose/Aspose.Slides.dll", "Aspose.Slides");
    $runtime->RegisterAssemblyFromFullQualifiedName("System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.Drawing");
    
    $sourcefile = "D:\\MYPRESENTATION.ppt";
    
    $presentation = $runtime->TypeFromName("Aspose.Slides.Presentation")->Instantiate($sourcefile);
    $format = $runtime->TypeFromName("System.Drawing.Imaging.ImageFormat")->Png;
    
    $x = 0;
    
    /** @var \NetPhp\Core\NetProxyCollection */
    $slides = $presentation->Slides->AsIterator();
    
    foreach ($slides as $slide) {
      $bitmap = $slide->GetThumbnail(1, 1);
      $destinationfile ="d:\\output\\slide_{$x++}.png";
      $bitmap->Save($destinationfile, $format);
    }
    
    $presentation->Dispose();
    

    它不使用 Office 互操作(不推荐用于服务器端自动化)并且速度很快。

    您可以控制图像的输出格式、大小和质量。事实上,您得到了一个 .Net Bitmap 对象,因此您可以随心所欲地使用它。

    原帖在这里:

    http://www.drupalonwindows.com/en/blog/powerpoint-presentation-images-php-drupal-example

    【讨论】:

      猜你喜欢
      • 2012-12-12
      • 2012-06-01
      • 2012-01-22
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      相关资源
      最近更新 更多