Python automates the office, and occasionally encounters a large number of word, ppt to pdf conversions during the work process. In view of this situation, a summary of Python usage is summarized, hoping to increase the efficiency of office work!
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()
Follow-up: Mutual conversion of pdf, word, ppt~