[使用Python的win32com控制PowerPoint。如何以编程方式访问“另存为”选项

问题描述 投票:1回答:2

我正在尝试通过python打开powerpoint,然后将幻灯片演示文稿另存为pdf讲义(三个到页面)。经过一番谷歌搜索,我偶然发现了this。一个非常相似的问题。但是,我似乎无法使其运行。我认为我可能将VB错误地“转换”为Python。

[查看MSDN文档here,我尝试填写两个必需的参数作为起点。尽管它似乎接受path,但它会引发FixedFormatType错误。

我的代码如下。

import win32com.client, sys, os

app = win32com.client.Dispatch("PowerPoint.Application")
app.Visible = True

names = []
for i in os.listdir(os.getcwd()):
    if i[-1] == 't':
        tmp = os.getcwd() + '\\' + i
        names.append(tmp)
        tmp = ''



presentation = app.Presentations.Open(names[0])
presentation.ExportAsFixedFormat(os.getcwd() + '\\test.pdf', 'PpFixedFormatType')

我已经尝试过ppFixdFormatType参数的许多变体。 ppFixedFormatTypePDFwin32com.ppFixedFormatTypePDFwin32com.client.constants.ppFixedFormatTypePDF等。但是都引起一种或另一种类型的错误。大部分与此相似:ValueError: invalid literal for int() with base 10: 'PpFixedFormatType'

python vba client powerpoint win32com
2个回答
1
投票

您可能在PowerPoint的API Type mismatch when using export function of PowerPoint 2007中遇到此错误。解决方案是为ExportAsFixedFormat()调用指定PrintRange参数。


0
投票

[我知道问题是关于通过VBA操纵PowerPoint,但是您也可以使用免费和开源pdftools将PDF幻灯片保存为讲义(就像PowerPoint一样。

保存3x3讲义的命令为:

pdftools --input-file slides.pdf --output slides_W.pdf --white-page --fitpaper --overwrite
pdftools --input-file slides_W.pdf --nup 3 3 --height 0.32 --delta 0mm 0mm --landscape --out-suffix _HANDOUT --frame --overwrite --paginate --paper a4paper -t $filename 0.4 0.01

您可以通过处理传递给--nup选项的参数来获得不同的讲义布局>

© www.soinside.com 2019 - 2024. All rights reserved.