使用PHP将Powerpoint PPT转换为JPG或PNG图像转换

时间:2012-03-03 18:37:40

标签: php linux powerpoint openoffice.org

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

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

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

提前致谢,

Rob Ganly

2 个答案:

答案 0 :(得分:14)

快速回答(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文件。因此,answare将PPT转换为PDF并使用imagemagick的转换,将多页PDF转换为一组图像。

Unoconv在Ubuntu发行版中分发

apt-get install unoconv

转换与imagemagick包一起分发

apt-get install imagemagick

In my blog there is an entry about this

答案 1 :(得分:0)

这可以使用3d方库(Aspose.Slides)从PHP完成。它可以同时适用于.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 Interop(不建议用于服务器端自动化)并且快速点亮。

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

原帖在这里:

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