python批量转为pdf_使用Python实现将ppt文件批量转化为pdf

使用Python实现将ppt文件批量转化为pdf

使用pywin32模块完成主要功能,程序整体实现思路

1. 初始化PowerPoint 端口应用程序

2. 使用应用程序对象打开ppt文件

3. 将ppt文件直接转存为PDF文件

特点:在后台运行,不需要将应用程序端口可视化,避免了comtypes带来的必须在前台运行的尴尬境地。

废话不多说直接开始整。(完整代码在最后面)

一、首先需要安装pywin32模块

1 $ pip install pywin32

如果上述命令安装失败可以尝试一下方法:

$ python -m pip install pypiwin32

二、导入PowerPoint类库,也可以理解为初始化PowerPoint应用实例

p = gencache.EnsureDispatch("PowerPoint.Application")

三、使用应用程序对象打开ppt文件

ppt = p.Presentations.Open(filename, False, False, False)

Presentations: Presentations是PowerPoint应用程序的一个对象。Microsoft PowerPoint 中所有Presentation对象的集合。 每个演示文稿对象代表当前在 PowerPoint 中打开演示文稿。

Open方法:

参数

名称必需/可选数据类型说明

FileName

必需

string

要打开的文件名。

ReadOnly

可选

bool

指定是以可读/写状态还是以只读状态打开文件。

Untitled

可选

bool

指定文件是否有标题。

WithWindow

可选

bool

指定文件是否可见。

四、将ppt文件转存为pdf文件

ppt.ExportAsFixedFormat(exportfile, 2, PrintRange=

ExportAsFixedFormat:将 Microsoft PowerPoint 演示文稿的副本发布为固定格式的文件(PDF 或 XPS)。

有关ExportAsFixedFormat说明及参数可以访问微软官方ExportAsFixedFormat说明,下面列举部分参数,感兴趣的可以再参考一下。

参数

名称必需/可选数据类型说明

路径

必需

String

用于导出的路径。

FixedFormatType

必需

PpFixedFormatType

导出幻灯片时应采用的格式。

Intent

可选

PpFixedFormatIntent

导出的目的。

FrameSlides

可选

MsoTriState

要导出的幻灯片是否应当带有边框。

HandoutOrder

可选

PpPrintHandoutOrder

打印讲义时应遵循的顺序。

OutputType

可选

PpPrintOutputType

输出的类型。

PrintHiddenSlides

可选

MsoTriState

是否打印隐藏的幻灯片。

PrintRange

可选

PrintRange

幻灯片范围。

RangeType

可选

PpPrintRangeType

幻灯片范围的类型。

SlideShowName

可选

String

幻灯片放映的名称。

IncludeDocProperties

可选

Boolean

是否还应导出的文档属性。 默认值为 False 。

KeepIRMSettings

可选

Boolean

是否还应导出 IRM 设置。 默认值为 True 。

DocStructureTags

可选

Boolean

是否包括文档结构标记,以改进文档的辅助功能。 默认值为 True 。

BitmapMissingFonts

可选

Boolean

是否包含文本的位图。 默认值为 True 。

UseISO19005_1

可选

Boolean

所得到的文档是否符合 ISO 19005 1 (PDF/A)。 默认值为 False 。

ExternalExporter

Optional

Variant

一个指向 Office 加载项实现 IMsoDocExporter COM 接口,并允许对备用实现的代码的调用。 默认值是一个空指针。

五、完整代码,需要的可以直接复制到需要转化的ppt文件目录下面

importosimportglobfrom win32com.client importgencachedefget_file_path():"""获得当前文件夹下的所有的.ppt和.pptx文件"""file_path= os.path.split(os.path.abspath(__file__))[0]

pp_files= glob.glob(os.path.join(file_path, "*.ppt*"))returnfile_path, pp_filesdefppt_to_pdf(filename, results):'''ppt 和 pptx 文件转换'''name= os.path.basename(filename).split('.')[0] + '.pdf'exportfile=os.path.join(results, name)ifos.path.isfile(exportfile):print(name, "已经转化了")returnp= gencache.EnsureDispatch("PowerPoint.Application")try:

ppt=p.Presentations.Open(filename, False, False, False)exceptException as e:print(os.path.split(filename)[1], "转化失败,失败原因%s" %e)

ppt.ExportAsFixedFormat(exportfile,2, PrintRange=None)print('保存 PDF 文件:', exportfile)

p.Quit()defmain():"""主程序执行"""file_path, pp_files=get_file_path()

results= os.path.join(file_path, "results")if notos.path.exists(results):

os.mkdir(os.path.join(results))for _ inpp_files:

ppt_to_pdf(_, results)if __name__ == "__main__":

main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值