如何通过 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 pptx 和 ppt 转换为 pdf 和 swf

microsoft office 2007 PPTX文件导出为PDF文件后,PDF文件中图片质量下降,如何解决?

如何在 Linux 上将 pptx 文件转换为 jpg 或 png(对于每张幻灯片)?

如何通过“ Microsoft打印为PDF”以编程方式将文件和网页打印为PDF?

PDF 转 PPTX

PDF 转 PPTX