我在这个论坛上看到了一些类似的问题,但所有这些都是针对.NET
平台的,所以请不要将它作为重复关闭。我有一个linux系统,我想通过php或shell脚本将幻灯片转换为图像(不太可取)。 convert
命令可以将pdf转换为jpg,但不能转换为ppt。
任何帮助都会很棒。
我认为不可能。使用.NET意味着用户正在创建一个powerpoint应用程序的实例,并要求它将特定的幻灯片打印到JPG或PDF,但在PHP的情况下,我认为它不可能来自Linux系统。
如果您可以使用Windows服务器,那么您可以使用PHP的COM接口创建COM应用程序并启动已安装的PowerPoint应用程序并执行相同的操作,只要COM组件公开必要的方法(可能是PRINT( ))
祝好运
qazxsw poo似乎拥有所有构建块,甚至还有一个简单的Web应用程序。
我们前一段时间在http://code.google.com/p/jodconverter/成功使用了旧版本,但我真的记不起细节了。
我能够通过首先将powerpoint文件转换为pdf来实现这一目标。这要求我在我的服务器上安装libre office。然后使用图像魔术轻松地将pdf转换为图像。这是我的一些代码。它使用http://sourceforge.net/projects/jodconverter/(用于ppt到pdf转换)和https://github.com/ncjoes/office-converter(用于pdf到图像转换)
https://github.com/spatie/pdf-to-image
嗨,你需要在php.ini中启用COM,然后你可以试试这个
//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");
}
?>
从shell脚本中你可以使用<?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;
,它是Unoconv的简单命令行包装器,它可以使你转换成合理的质量。
对于可以直接从PHP(在Linux上)调用的具有更高质量输出的解决方案,您可以使用专用文件转换API,例如LibreOffice。
提交PPT(或PPTX)文件以转换为JPEG的代码如下(Zamzar中的更多信息):
documentation