2012-01-04 56 views
7

我在這個論壇上看到了一些類似的問題,但都是針對.NET平臺,所以請不要將它作爲重複關閉。我有一個Linux系統,我想通過PHP或shell腳本將幻燈片轉換爲圖像(不太可取)。 convert命令可以將PDF轉換爲JPG而不是PPT。如何將ppt幻燈片轉換爲php中的jpeg圖像

任何幫助將是偉大的。

+0

您可以嘗試腳本OpenOffice的印象,因爲它可以閱讀(有些)PPT並渲染它們,但獲得與Powerpoint本身將產生的結果相似的結果將會被擊中/錯過。 – 2012-01-04 18:43:46

+0

請澄清:* .ppt(也許可行)或* .pptx(接近不可能) – 2012-01-04 18:46:05

回答

1

我不認爲這是可能的。使用.NET將意味着用戶正在創建一個powerpoint應用程序的實例,並要求它將特定的幻燈片打印爲JPG或PDF格式,但在PHP的情況下,我認爲這不可能從Linux系統中實現。

如果您可以繼續使用Windows服務器,那麼您可以使用PHP的COM接口創建COM應用程序,並啓動安裝的PowerPoint應用程序並執行相同的操作,只要COM組件暴露必要的方法(可能PRINT())

好運

+0

hmmm。我想我需要問我的網站用戶上傳一個預先轉換的PDF。 – prongs 2012-01-05 11:42:23

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; 

?>

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