如何在PHP中将ppt幻灯片转换为jpeg图像

时间:2012-01-04 18:38:33

标签: php powerpoint jpeg

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

任何帮助都会很棒。

6 个答案:

答案 0 :(得分:2)

http://code.google.com/p/jodconverter/似乎已经有了所有构建块,甚至还有一个示例webapp。

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

答案 1 :(得分:1)

我认为不可能。使用.NET意味着用户正在创建一个powerpoint应用程序的实例,并要求它将特定的幻灯片打印到JPG或PDF,但在PHP的情况下,我认为它不可能来自Linux系统。 / p>

如果您可以使用Windows服务器,那么您可以使用PHP的COM接口创建COM应用程序并启动已安装的PowerPoint应用程序并执行相同的操作,只要COM组件公开必要的方法(可能是PRINT())

祝你好运

答案 2 :(得分:1)

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

            }

答案 3 :(得分:0)

嗨,你需要在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;

&GT;

答案 4 :(得分:0)

从shell脚本中,您可以使用Unoconv这是LibreOffice的简单命令行包装,它可以使您转换为合理的质量。

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

提交PPT(或PPTX)文件以转换为JPEG的代码如下(documentation中的更多信息):

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

答案 5 :(得分:0)

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

然后包含图像文件的文件夹位于\ ppt \ media \文件夹中。

https://www.php.net/manual/en/ziparchive.extractto.php提供php代码以提取压缩文件。