我需要在Linux上将单个Powerpoint(PPT)幻灯片/文件转换为JPG或PNG格式,但到目前为止还没有找到任何成功的方法。我听说可以通过php通过开放办公室完成,但没有找到任何示例或有用的文档。我也考虑用python或java来做这件事,但我不确定要走哪条路线。
我知道可以在Windows服务器上使用COM来完成,但如果可能的话,我真的不想这样做。
感激地收到任何想法/指针。 (是的,我在发布之前搜索了网站和其他人!)
提前致谢,
Rob Ganly
答案 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
答案 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