PowerPoint 2007 SP2,PowerShell 中的 ExportAsFixedFormat?

Posted

技术标签:

【中文标题】PowerPoint 2007 SP2,PowerShell 中的 ExportAsFixedFormat?【英文标题】:PowerPoint 2007 SP2, ExportAsFixedFormat in PowerShell? 【发布时间】:2010-10-27 23:29:10 【问题描述】:

昨天我试图将一组 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 is for PDF

由于“蛮力”方法不起作用(“类型不匹配”),我尝试使用

导入枚举类型
$pptypepdf= [Microsoft.Office.Interop.PowerPoint.PpFixedFormatType]::PpFixedFormatTypePDF
$f.ExportAsFixedFormat('\some\newfile.pdf', $pptypepdf) 

这里奇怪的是,它仍然抛出“类型不匹配”的错误......

另外,SaveAs 也适用于

$f.SaveAs('\some\newfile.pdf', 32) # 32 is for PDF

我做错了什么?

更新

相关文档:

PpFixedFormatType Enumeration ExportAsFixedFormat Method

这是完整的错误信息

$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

【问题讨论】:

确切的错误是什么?我查了 MSDN,关于这个方法的文档对于这个论点似乎是错误的。而且我什至在 MSDN 上都找不到那个枚举! 我已经用相关的细节编辑了问题,谢谢 您是否尝试过提供所有可选参数的调用? 当缺少“可选”参数时,PowerPoint 的 ExportAsFixedFormat 将返回“类型不匹配”。只有提供了所有参数,Invoke 返回的 puArgErr 值才有意义。 请查看我在这里提供的解决方案:link 看看是否可行! 【参考方案1】:

我在 Python 中遇到过同样的问题。尝试按照 Stefan Schukat 的解决方案中所述指定 PrintRange 参数:

这是 Powerpoint 中的一个错误。它定义了“[在,可选的, defaultvalue(0)] PrintRange* PrintRange" 导致生成 python包装器中的“PrintRange = 0”。因此你会得到 调用方法时出错。所以makepy没有问题。解决方法 使用 PrintRange=None 调用该方法,因为 None 是一个 vali COM 对象。 例如。演示文稿.ExportAsFixedFormat(pptFile+'.pdf', win32com.client.constants.ppFixedFormatTypePDF, win32com.client.constants.ppFixedFormatIntentScreen,PrintRange=None) 应该可以。

Source: Type mismatch when using export fuction of PowerPoint 2007


我一点也不了解 PowerShell,但我想出了一个可行的例子:

$p.ActivePresentation.PrintOptions.Ranges.Add(1,1)
$r = $p.ActivePresentation.PrintOptions.Ranges.Item(1)
$document.ExportAsFixedFormat('D:\\ps.pdf', 2, 1, 0, 1, 1, 0, $r)

这不是一个完整的解决方案,但已完成导出。它以某种方式导出完整的演示文稿,而不仅仅是幻灯片。 1,和我想的一样。附言哦。这是相同的solution

【讨论】:

以上是关于PowerPoint 2007 SP2,PowerShell 中的 ExportAsFixedFormat?的主要内容,如果未能解决你的问题,请参考以下文章

SCCM 2007 SP2 部署需求

为啥我的POWERPOINT2007中的shock wave flash object不能注册

PowerPoint 简介

将选定的 PowerPoint 形状(或 DrawingML)转换为 XAML

PowerPoint计时器

如何以编程方式获取 PowerPoint 文件格式