Это можно сделать из PHP, используя стороннюю библиотеку (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 Interop (который НЕ рекомендуется для автоматизации на стороне сервера) и работает быстро.
Вы можете контролировать формат вывода, размер и качество изображений. Действительно, вы получаете объект .Net Bitmap, чтобы вы могли делать с ним все, что захотите.
Оригинальный пост здесь:
http://www.drupalonwindows.com/en/blog/powerpoint-presentation-images-php-drupal-example