Как конвертировать слайд PPT в JPEG изображения в PHP - PullRequest
7 голосов
/ 04 января 2012

Я видел несколько похожих вопросов на этом форуме, но все они были для платформы .NET, поэтому, пожалуйста, не закрывайте их как дубликаты. У меня есть система Linux, и я хочу конвертировать слайд в изображения с помощью PHP или сценария оболочки (менее предпочтительно). Команда convert может конвертировать PDF в JPG, но не PPT.

Любая помощь будет отличной.

Ответы [ 5 ]

2 голосов
/ 04 января 2012

http://code.google.com/p/jodconverter/, кажется, имеет все строительные блоки, есть даже пример веб-приложения.

Мы использовали старую версию в http://sourceforge.net/projects/jodconverter/ успешно некоторое время назад, ноЯ действительно не могу вспомнить детали.

1 голос
/ 24 апреля 2019

Мне удалось это сделать, сначала преобразовав файл powerpoint в pdf.Это потребовало от меня установки libre office на моем сервере.Затем преобразование PDF в изображения легко выполняется с помощью волшебства изображения.Вот часть моего кода.Он использует https://github.com/ncjoes/office-converter (для преобразования ppt в pdf) и https://github.com/spatie/pdf-to-image (для преобразования pdf в изображения)

  //now convert file to pdf
            $converter = new OfficeConverter($newFile);
            $result = $converter->convertTo('output.pdf');

            $pdfFile = BASE_PATH.'/output.pdf';
            //now convert pdf file to images
            chdir(BASE_PATH); 

            //get total number of pages in pdf file
            $pdf = new \Spatie\PdfToImage\Pdf($pdfFile);
            $pdf->setCompressionQuality(80);
            $pages = $pdf->getNumberOfPages();

            for($i=1;$i<=$pages;$i++){
                $pdf->setPage($i)->saveImage(BASE_PATH."/image$i.jpg");

            }
1 голос
/ 04 января 2012

Я не думаю, что это возможно.Использование .NET означает, что пользователь создает экземпляр приложения PowerPoint и просит его напечатать определенный слайд в JPG или PDF, но в случае с PHP я не думаю, что это возможно из системы Linux.

В случае, если вы можете перейти на сервер Windows, вы можете использовать COM-интерфейс PHP для создания COM-приложения и запуска установленного приложения PowerPoint и делать то же самое, пока компонент COM предоставляет необходимыеметоды (вероятно, PRINT ())

Удачи

0 голосов
/ 04 ноября 2017

Из сценария оболочки вы можете использовать Unoconv , который представляет собой простую оболочку командной строки для LibreOffice , которая позволит вам конвертировать в приемлемое качество.Решение с более высоким качеством вывода, которое можно вызывать напрямую из PHP (и в Linux), вы можете использовать специальный API для преобразования файлов, например Zamzar .

Код для отправки PPTPPTX) файл для преобразования в JPEG будет выглядеть следующим образом (больше информации в документации ):

<?php
// Build request
$endpoint = "https://api.zamzar.com/v1/jobs";
$apiKey = "YOUR_KEY";
$sourceFilePath = "/tmp/my.ppt"; // Or PPTX
$targetFormat = "jpg";

$sourceFile = curl_file_create($sourceFilePath);    
$postData = array(
  "source_file" => $sourceFile,
  "target_format" => $targetFormat
);

// Send request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $apiKey . ":");
$body = curl_exec($ch);
curl_close($ch);

// Process response (with link to converted files)
$response = json_decode($body, true);
print_r($response);
?>
0 голосов
/ 18 мая 2016

привет, вам нужно включить COM в php.ini, тогда вы можете попробовать это

<?php

$ppApp = new COM("PowerPoint.Application");
$ppApp->Visible = True;
$strPath = realpath(basename(getenv($_SERVER["SCRIPT_NAME"]))); // C:/AppServ/www/myphp
$ppName = "MySlides.ppt";
$FileName = "MyPP";
//*** Open Document ***//
$ppApp->Presentations->Open(realpath($ppName));
//*** Save Document ***//
$ppApp->ActivePresentation->SaveAs($strPath."/".$FileName,17);  //'*** 18=PNG, 19=BMP **'
//$ppApp->ActivePresentation->SaveAs(realpath($FileName),17);
$ppApp->Quit;
$ppApp = null;

?>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...