如何转换ppt幻灯片到jpeg图像在php


How to convert ppt slide to jpeg images in php

我在这个论坛上看到了一些类似的问题,但所有这些都是针对.NET平台的,所以请不要把它当作重复的关闭。我有一个linux系统,我想通过php或shell脚本转换幻灯片图像(不太可取)。convert命令可以将pdf转换为jpg,但不能转换为ppt。

任何帮助都太好了。

我能够通过首先将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");
            }

http://code.google.com/p/jodconverter/似乎已经有了所有的构建块,甚至有一个示例web应用程序。

我们前一段时间在http://sourceforge.net/projects/jodconverter/成功地使用了旧版本,但是我真的不记得细节了

我认为那是不可能的。使用。net将意味着用户正在创建一个powerpoint应用程序的实例,并要求它将特定的幻灯片打印为JPG或PDF格式,但在PHP的情况下,我认为这在linux系统中是不可能的。

如果你可以在windows服务器上运行,那么你可以使用PHP的COM接口来创建一个COM应用程序并启动安装的PowerPoint应用程序,只要COM组件公开必要的方法(可能是PRINT())就可以做同样的事情

好运

从shell脚本中,你可以使用Unoconv,这是一个简单的命令行包装到LibreOffice,这将使您能够转换到合理的质量

对于可以直接从PHP(和Linux)调用的高质量输出的解决方案,您可以使用专用的文件转换API,如Zamzar。

提交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);
?>

嗨,你需要在php.ini中启用COM然后你可以试试这个

<?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;

?>

.pptx文件只是一个压缩文件。所以你需要做的就是解压文件,然后使用。jpeg文件:

则存放图片文件的文件夹在'ppt'media' folder.

https://www.php.net/manual/en/ziparchive.extractto.php给出了解压文件的PHP代码。