如何通过 COM 类将 PPTX 转换为 PDF?
Posted
技术标签:
【中文标题】如何通过 COM 类将 PPTX 转换为 PDF?【英文标题】:How to convert PPTX to PDF via the COM class? 【发布时间】:2021-05-31 01:55:04 【问题描述】:我在使用 COM 类将 PPTX 转换为 PDF 时遇到了一点问题。 PowerPoint 会打开,但无法使用 ExportAsFixedFormat 函数转换为 pdf,告诉我参数 0 是错误的类型。但是,我的路径是一个字符串,函数需要一个字符串,所以我很困惑?
你能帮我吗,我只想将 PPTX 转换为 PDF :'( ?
错误:
com_exception: Parameter 0: Le type ne correspond pas. in C:\wamp64\www\TP1\pt_legrand\php\demarrage_controle.php:13 Stack trace: #0 C:\wamp64\www\TP1\pt_legrand\php\demarrage_controle.php(13): variant->ExportAsFixedFormat2('C://wamp64//www...', 32) #1 C:\wamp64\www\TP1\pt_legrand\php\texte.inc.php(24): include_once('C:\\wamp64\\www\\T...') #2 C:\wamp64\www\TP1\pt_legrand\index.php(8): require_once('C:\\wamp64\\www\\T...') #3 main
我的代码:
try
$pp = new COM("Powerpoint.Application") or die ("Could not initialise Object.");
$pp->Visible = true;
// open the pp 2007-2013 document
$pp->Presentations->Open('C://wamp64//www//TP1//pt_legrand//php//test.pptx');
// convert pp 2007-2013 to PDF
$filePath = 'C://wamp64//www//TP1//pt_legrand//php';
$pp->ActivePresentation->ExportAsFixedFormat2(
$filePath,
2
);
$pp->Quit(false);
// clean up
unset($pp);
catch(Exception $e)
echo $e;
【问题讨论】:
也许不是主要问题(不是 PHP 人),但您为什么将 PowerPoint 称为 Word?WdExportCreateBookmarks
来自 Word... 但无论如何32
应该是2
,对应于ppFixedFormatTypePDF
。
是的,它是一些复制和粘贴以及一些难闻的代码'^^。我尝试使用 2 但已经出现相同的错误。
【参考方案1】:
或许,你可以试试SaveAs 方法。老实说,这种类型不匹配错误并不明显。
$pp->ActivePresentation->SaveAs('THE_PATH/file.pdf', 32);
【讨论】:
我只是在 VBA 中使用它,您必须:1) 在 .Path 之后提供路径分隔符,2) 提供要导出的 PDF 的名称,而不仅仅是路径,以及 3)在导出类型参数之后提供一个 Intent 参数。对于印刷品,您需要提供 2。我想任何其他语言的要求都是一样的。 我认为,问题在于,由于某种原因,PowerPoint ExportAsFixedFormat 方法无论参数如何都会引发Parameter 0: type mismatch
异常,而相关的 Word 和 Excel 方法则按预期工作(PHP)。因此,它甚至不检查指定的路径本身。附注:您需要传递源文件和转换文件的完整绝对路径realpath("related_path/file.ext")
,也可以将此字符串转换为 Windows-1251 iconv("UTF-8", "CP1251//IGNORE", realpath("related_path/file.ext"))
以防止 Unicode 出现问题以上是关于如何通过 COM 类将 PPTX 转换为 PDF?的主要内容,如果未能解决你的问题,请参考以下文章
microsoft office 2007 PPTX文件导出为PDF文件后,PDF文件中图片质量下降,如何解决?
如何在 Linux 上将 pptx 文件转换为 jpg 或 png(对于每张幻灯片)?