Как да конвертирате ppt слайд в jpeg изображения в php

Видях някои подобни въпроси в този форум, но всички те бяха за платформата .NET, така че, моля, не го затваряйте като дубликат. Имам Linux система и искам да конвертирам слайд в изображения чрез php или shell скрипт (по-малко за предпочитане). командата convert може да конвертира pdf в jpg, но не и ppt.

Всяка помощ би била чудесна.


person prongs    schedule 04.01.2012    source източник
comment
Можете да опитате да пишете OpenOffice Impress, тъй като той може да чете (някои) PPT и да ги изобразява, но получаването на резултати, подобни на тези, които самият Powerpoint ще произведе, ще бъде хит/пропуск.   -  person Marc B    schedule 04.01.2012
comment
Моля, изяснете: *.ppt (може би изпълнимо) или *.pptx (почти невъзможно)   -  person Eugen Rieck    schedule 04.01.2012


Отговори (6)


Не мисля, че е възможно. Използването на .NET би означавало, че потребителят създава екземпляр на приложение на powerpoint и го моли да отпечата конкретен слайд в JPG или PDF, но в случай на PHP не мисля, че би било възможно от система Linux.

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

Късмет

person Mathieu Dumoulin    schedule 04.01.2012
comment
Хммм. Предполагам, че тогава трябва да помоля потребителите на моя сайт да качат предварително конвертиран pdf. - person prongs; 05.01.2012

Успях да постигна това, като първо конвертирах файла на 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");

            }
person Ayokunle Akinboboye    schedule 24.04.2019

http://code.google.com/p/jodconverter/ изглежда има цялата сграда блокове на място, дори има примерно уеб приложение.

Използвахме старата версия на http://sourceforge.net/projects/jodconverter/ успешно преди известно време , но наистина не мога да си спомня подробностите.

person Eugen Rieck    schedule 04.01.2012
comment
Казахте, че pptx е невъзможен? какво прави този проект? - person prongs; 05.01.2012
comment
Той използва [Open|Libre]Office, който всъщност не е в състояние надеждно да зарежда .pptx файлове - person Eugen Rieck; 05.01.2012

здравейте, трябва да активирате 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;

?>

person BourneShady    schedule 18.05.2016

От скрипт на обвивка можете да използвате Unoconv, който е проста обвивка на командния ред за LibreOffice, което би ви позволило да конвертирате в разумно качество.

За решение с по-висококачествен изход, който може да бъде извикан директно от PHP (и на Linux), можете да използвате специален API за преобразуване на файлове като Замзар.

Кодът за изпращане на PPT (или PPTX) файл за конвертиране в 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);
?>
person Chris Whyley    schedule 03.11.2017

Файлът .pptx е просто компресиран файл. Така че всичко, което трябва да направите, за да получите .jpeg файловете, е да разархивирате файла и след това да използвате .jpeg файловете:

Тогава папката с файловете с изображения е в папка \ppt\media\.

https://www.php.net/manual/en/ziparchive.extractto.php дава php код за извличане на компресирания файл.

person Graham Peaden    schedule 29.08.2020