Вчера я пытался пакетно преобразовать группу PPT в PDF для друга, и я решил взглянуть на PowerShell, так как он некоторое время сидел на моем HD.
Вот код, который я придумал.
$p = new-object -comobject powerpoint.application
# I actually don't know why I have to set the window to visible,
# but it doesn't work otherwise, anyway, it's not the real problem I have
$p.visible = 1
$f = $p.presentations.open('\some\file.ppt')
$f.ExportAsFixedFormat('\some\newfile.pdf', 2)
2 для PDF
Поскольку метод "грубой силы" не работал ("несоответствие типов"), я попытался импортировать тип enum с помощью
$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat('\some\newfile.pdf', $pptypepdf)
Странно то, что он по-прежнему выдает ошибку «несоответствие типов» ...
Кроме того, SaveAs отлично работает с
$f.SaveAs('\some\newfile.pdf', 32) # 32 is for PDF
Что я делаю не так?
Обновление
Соответствующая документация:
Вот полное сообщение об ошибке
$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat($filepath, $pptypepdf)
Exception calling "ExportAsFixedFormat" with "2" argument(s): "Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))"
At line:1 char:23
+ $f.ExportAsFixedFormat <<<< ($filepath, $pptypepdf)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation