Powerpoint PPT в JPG или PNG Преобразование изображений с использованием PHP - PullRequest
4 голосов
/ 03 марта 2012

Мне нужно преобразовать отдельные слайды / файлы Powerpoint (PPT) в формат JPG или PNG в linux, но пока я не нашел способа сделать это успешно.Я слышал, что это можно сделать с открытым офисом через php, но не нашел ни примеров, ни много полезной документации.Я бы подумал сделать это с Python или Java, но я не уверен, какой маршрут выбрать.

Я понимаю, что это можно сделать с помощью COM на сервере Windows, но очень хотел бы воздержаться от этогоесли возможно.

Любые идеи / указатели с благодарностью приняты.(И да, я искал сайт и другие перед публикацией!)

Заранее спасибо,

Роб Ганли

Ответы [ 2 ]

14 голосов
/ 16 апреля 2013

Быстрый ответ (2 шага):

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

И вуаля.

Объяснение немного больше:

Я уже следовал в той же потребности.Преобразуйте набор слайдов PowerPoint в набор изображений.Я не нашел ни одного инструмента для этого.Но я нашел unoconv, который конвертирует форматы libreoffice в другие форматы, включая jpg, png и PDF.Единственным недостатком является то, что unoconv преобразует только один слайд в файл jpg / png, но при преобразовании в PDF он преобразует всю презентацию в многостраничный файл PDF.Таким образом, ответчик преобразовал PPT в PDF и с помощью imagemagick преобразовал несколько страниц PDF в набор изображений.

Unoconv распространяется в дистрибутиве Ubuntu

apt-get install unoconv

И преобразование распространяетсяс пакетом imagemagick

apt-get install imagemagick

В моем блоге есть запись об этом

1 голос
/ 31 января 2016

Это можно сделать из 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

...