利用Python将Word&PPT批量转成PDF

注明:本文转自未明学院,仅用于个人学习使用

首先,需要pywin32模块,如果没有的话需要先安装。安装命令:pip install pywin32

从win32com模块中导入Dispatch,constants。其中Dispatch用于调度word和ppt程序,constants用于设置word的一些参数:

from win32com.client import Dispatch,constants

定义word转pdf的函数,doc或者docx都可以直接转成pdf:

def WordToPdf(wordPath, pdfPath):
    '''
    wordPath参数对应的是word的完整路径
    pdfPath参数对应的是pdf的完整路径
    '''
    # 调用word程序
    word =Dispatch('Word.Application')
    # 打开word文件
    doc = word.Documents.Open(wordPath)

将word转化成pdf:

doc.ExportAsFixedFormat(
        #对应pdf完整的路径
        pdfPath,
        # 指定是以 PDF 还是 XPS 格式保存文档
        constants.wdExportFormatPDF,
        # 选用,非必须,指定导出过程是仅包括文本,还是同时包括文本和标记
        Item=constants.wdExportDocumentWithMarkup, 
        # 选用,非必须,指定是否导出书签以及要导出的书签类型。
        CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

执行完操作后,关闭word程序:

word.Quit()

给定word和pdf的完整路径:

wordPath = r"C:\Users\admin\Desktop\测试\测试1.doc"
pdfPath = r"C:\Users\admin\Desktop\测试\测试1.pdf"

调用函数将具体的某个word文件转换成pdf:

WordToPdf(wordPath,pdfPath)

成功将word文件转换成pdf格式的文件。

然后是将ppt文件转换成pdf文件:

定义ppt转换成pdf的函数,ppt 或者pptx都可以直接转换:

def PowerPointToPdf(pptPath, pdfPath):
    '''
    pptPath参数对应的是ppt的完整路径
    pdfPath参数对应的是pdf的完整路径
    '''
 # 调用ppt程序
    PowerPoint = Dispatch("PowerPoint.Application")
    # 显示ppt程序
    PowerPoint.Visible = 1
    # 打开指定的ppt文件
    ppt = PowerPoint.Presentations.Open(pptPath)

将ppt转化成pdf。官方参考链接:
https://docs.microsoft.com/zh-cn/office/vba/api/PowerPoint.Presentation.ExportAsFixedFormat

ppt.ExportAsFixedFormat(
        # 指定输出的pdf文件的完整路径
        pdfPath,
        # 导出幻灯片时应采用的格式,导出为 PDF 格式
        constants.ppFixedFormatTypePDF,
        # 设置打印范围,打印整个文件
        PrintRange = None
        )

执行完操作后,关闭ppt程序:

PowerPoint.Quit()

给定ppt和pdf的完整路径:

pptPath = r"C:\Users\admin\Desktop\测试\01.pptx"
pdfPath2 = r"C:\Users\admin\Desktop\测试\ppt01.pdf"

调用函数将具体的某个ppt文件转化成pdf:

PowerPointToPdf(pptPath,pdfPath2)

以上操作是将单个Word&PPT文件转成PDF文件,接下来教你怎么批量转换成PDF文件,不用一次次手动点击换格式那么麻烦。

word批量转化为pdf

导入os模块用于操作文件路径:

import os

指定word所在文件夹:

word_folder = r"C:\Users\admin\Desktop\测试"

取出文件夹内的每个word文件转换成pdf,就能实现将批量word文件转换成pdf格式的文件了:

for item in os.listdir(word_folder):
    wordPath = word_folder +os.sep + item
    if 'doc' in item and 'docx' not in item:
        pdfPath = word_folder + os.sep +item.replace('.doc','.pdf')
        WordToPdf(wordPath,pdfPath)
    if 'docx' in item :
        pdfPath = word_folder + os.sep +item.replace('.docx','.pdf')
        WordToPdf(wordPath,pdfPath)

ppt批量转化为pdf

方法和步骤同word批量转换成pdf一样。

导入os模块用于操作文件路径:

import os

指定ppt所在文件夹:

ppt_folder = r"C:\Users\admin\Desktop\测试"

取出文件夹内的每个ppt文件转换成pdf,就能实现将批量的ppt文件转换成pdf格式的文件了:

for item in os.listdir(ppt_folder):
    pptPath = ppt_folder +os.sep + item
    if 'ppt' in item and 'pptx' not in item :
        pdfPath = ppt_folder + os.sep +item.replace('.ppt','.pdf')
        PowerPointToPdf(pptPath,pdfPath)
    if 'pptx' in item :
        pdfPath = ppt_folder + os.sep +item.replace('.pptx','.pdf')
        PowerPointToPdf(pptPath,pdfPath)