使用PHP从office文件(.doc .ppt等)生成JPG

Chr*_*and 6 php jpeg ms-office

我正在构建一个应用程序,人们可以上传文件并与其他人共享.我们要做的部分工作是允许人们在线预览文件.

是否有一种直接的方法来为文档中的前X个页面生成jpgs?然后我们可以将这些jpgs放在网页中,允许用户预览.

我已经看过在服​​务器上安装开放式办公室,但希望有一个PHP库可以做同样的工作.

有人可以帮忙吗?

干杯


顺便说一句,不一定是jpg,任何图像文件都可以(实际上甚至pdf都可以)

Abi*_*ain 4

尝试使用 com 类:

您可以使用 com 类将 Office 文件转换为 jpg

COM 类参考:-

https://www.php.net/manual/en/class.com.php

或者下面的代码是将 ppt 转换为 jpg 格式

<html>
<head>
<title>ShotDev.Com Tutorial</title>
</head>
<body>
<?
    $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;
?>
PowerPoint Created to Folder <b><?=$FileName?></b>
</body>
</html>

---------------------------

Or try this :-

$powerpnt = new COM("powerpoint.application") or die("Unable to instantiate Powerpoint");

$presentation = $powerpnt->Presentations->Open(realpath($file), false, false, false) or die("Unable to open presentation");

foreach($presentation->Slides as $slide)

{

    $slideName = "Slide_" . $slide->SlideNumber;

    $exportFolder = realpath($uploadsFolder);

    $slide->Export($exportFolder."\\".$slideName.".jpg", "jpg", "600", "400");

}

$powerpnt->quit();
Run Code Online (Sandbox Code Playgroud)

?>

或将word转换为jpg

<?php
// starting word
$word = new COM("word.application") or die("Unable to instantiate Word");
echo "Loaded Word, version {$word->Version}\n";

//bring it to front
$word->Visible = 1;

//open an empty document
$word->Documents->Add();

//do some weird stuff
$word->Selection->TypeText("This is a test...");
$word->Documents[1]->SaveAs("Useless test.doc");

//closing word
$word->Quit();

//free the object
$word = null;
?>
Run Code Online (Sandbox Code Playgroud)

  • 如果这个解决方案成功,它将需要基于Windows的服务器! (3认同)