Python自动化办公,在工作的过程中偶尔会遇到大量的word、ppt转pdf的情况,针对这情况,归纳了一份Python使用,希望可以加大办公的效率!
import os
import comtypes.client
def get_path_for_word():
# 获取当前运行路径
path = os.getcwd()
print('当前路径:' + path)
# 获取所有文件名的列表
filename_list = os.listdir(path)
# 获取所有word文件名列表
wordname_list = [filename for filename in filename_list \
if filename.endswith((".doc", ".docx"))]
for wordname in wordname_list:
# 分离word文件名称和后缀,转化为pdf名称
print('获取文件列表:' + wordname)
pdfname = os.path.splitext(wordname)[0] + '.pdf'
# 如果当前word文件对应的pdf文件存在,则不转化
if pdfname in filename_list:
continue
# 拼接 路径和文件名
wordpath = os.path.join(path, wordname)
pdfpath = os.path.join(path, pdfname)
#生成器
yield wordpath,pdfpath
def get_path_for_ppt():
# 获取当前运行路径
path = os.getcwd()
print('当前路径:' + path)
# 获取所有文件名的列表
filename_list = os.listdir(path)
# 获取所有word文件名列表
wordname_list = [filename for filename in filename_list \
if filename.endswith((".ppt", ".pptx"))]
for wordname in wordname_list:
# 分离word文件名称和后缀,转化为pdf名称
print('获取文件列表:' + wordname)
pdfname = os.path.splitext(wordname)[0] + '.pdf'
# 如果当前word文件对应的pdf文件存在,则不转化
if pdfname in filename_list:
continue
# 拼接 路径和文件名
wordpath = os.path.join(path, wordname)
pdfpath = os.path.join(path, pdfname)
#生成器
yield wordpath,pdfpath
def convert_word_to_pdf():
word = comtypes.client.CreateObject("Word.Application")
word.Visible = 0
for wordpath,pdfpath in get_path_for_word():
newpdf = word.Documents.Open(wordpath)
newpdf.SaveAs(pdfpath, FileFormat=17)
newpdf.Close()
print('word转换pdf结束!')
def convert_ppt_to_pdf():
# ppt转化为pdf
FileFormat=32
ppt = comtypes.client.CreateObject("Powerpoint.Application")
ppt.Visible = 1
for wordpath,pdfpath in get_path_for_ppt():
newpdf = ppt.Presentations.Open(wordpath)
newpdf.SaveAs(pdfpath, FileFormat)
newpdf.Close()
print('ppt转化为pdf结束!')
if __name__ == "__main__":
convert_word_to_pdf()
#convert_ppt_to_pdf()
后续:pdf、word、ppt的相互转换~