我在这个论坛上看到了一些类似的问题,但所有这些都是针对.NET
平台的,所以请不要将其作为重复关闭。我有一个linux系统,我想通过php或shell脚本将幻灯片转换为图像(不太可取)。 convert
命令可以将pdf转换为jpg,但不能转换为ppt。
任何帮助都会很棒。
答案 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代码以提取压缩文件。