我正在尝试通过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
参数的许多变体。 ppFixedFormatTypePDF
,win32com.ppFixedFormatTypePDF
,win32com.client.constants.ppFixedFormatTypePDF
等等。但都引发了一种或另一种错误。大多数与此类似:ValueError: invalid literal for int() with base 10: 'PpFixedFormatType'
答案 0 :(得分:1)
您可能在PowerPoint的API中遇到过此错误:Type mismatch when using export function of PowerPoint 2007。 解决方案是为ExportAsFixedFormat()调用指定PrintRange参数。
答案 1 :(得分: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
选项的参数来获得不同的讲义布局