致命错误:带有消息的未捕获异常“com_exception”。在将ppt转换为jpg时
Posted
技术标签:
【中文标题】致命错误:带有消息的未捕获异常“com_exception”。在将ppt转换为jpg时【英文标题】:Fatal error: Uncaught exception 'com_exception' with message. while converting ppt to jpg 【发布时间】:2012-05-21 12:50:44 【问题描述】:当我运行打击代码时:
/*** PPT to Image conversion ***/
$ppt_file = 'E:\wamp\www\temp/a.pptx';
$app = new COM("PowerPoint.application") or die("Unable to instantiate PowerPoint");
$app->Visible = true;
$app->Presentations->Open($ppt_file);
$app->Presentations[1]->SaveAs("E:/tmp/outdir",18);
$app->Presentations[1]->Close();
$app->Quit();
$app = null;
它给了我一个例外:
致命错误:未捕获异常 'com_exception' 并带有消息“来源: Microsoft Office PowerPoint 2007说明: PowerPoint 无法打开文件。”在 E:\wamp\www\temp\video_conversion.php:107 堆栈跟踪:#0 E:\wamp\www\temp\video_conversion.php(107): variant->Open('E:\wamp\www\tem ...') #1 main 在第 107 行的 E:\wamp\www\temp\video_conversion.php 中抛出
我无法弄清楚问题所在。
【问题讨论】:
您是否通过直接从您的代码中打开来排除权限问题? 您找到解决方案了吗?我也有类似的问题。 【参考方案1】:这种问题是由于以下因素造成的。
-
php.ini 设置
文件夹权限
服务器未启用允许打开
允许的上传大小
【讨论】:
【参考方案2】:在您的错误中,您会看到以下消息:PowerPoint could not open the file.' in E:\wamp\www\temp\video_conversion.php:107
PHP 用户是否拥有文件E:\wamp\www\temp/a.pptx
的权限?
尝试更正您的斜杠:E:\wamp\www\temp\a.pptx
因为/
通常指的是选项或参数。
归根结底,这似乎是权限错误、位置问题或类似问题阻止了对该文件的访问。你能用fopen
或file_get_contents
打开文件吗?
【讨论】:
斜线只是一个错字。 Lemmy 尝试使用文件获取内容并告诉你会发生什么。 file_get_contents 好运吗?【参考方案3】:用 com 类试试这个:
COM类参考:-http://us2.php.net/manual/en/class.com.php
<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>
或者试试这个:
$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();
【讨论】:
以上是关于致命错误:带有消息的未捕获异常“com_exception”。在将ppt转换为jpg时的主要内容,如果未能解决你的问题,请参考以下文章
parse-php-sdk 致命错误:未捕获的异常 'Parse\ParseException' 带有消息 'unauthorized'
致命错误:未捕获的异常“PDOException”,带有消息“SQLSTATE [42000]:语法错误或访问冲突 PHP 和 PDO
致命错误:未捕获的异常 'Zend_Session_Exception' 带有消息 'Zend_Session::start()
PHP/MongoDB 错误:未捕获的异常“MongoCursorException”
致命错误:未捕获的异常 'mysqli_sql_exception' 带有消息 'No index used in query/prepared statement'
带有消息“SQLSTATE [22007]”的未捕获异常“PDOException”:日期时间格式无效:1366 字符串值不正确