利用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)