1 目的
笔者在python3.6环境下,想把一个word文档转化为pdf文件。使用了以下的方式
from win32com import client
import pythoncom
doc2pdf(doc_path, filename)
def doc2pdf(doc_name, pdf_name):
"""
:word文件转pdf
:param doc_name word文件名称
:param pdf_name 转换后pdf文件名称
"""
pythoncom.CoInitialize()
root_path = r"D:\zihe.zhu\2020.01-task\webproject20200105" # 此处改成绝对位置
word = client.DispatchEx("Word.Application")
worddoc = word.Documents.Open(root_path + doc_name[1:], ReadOnly=1)
worddoc.SaveAs(root_path + pdf_name[1:], FileFormat=17)
worddoc.Close()
2 问题
但是在结束程序后发现,后台开启的word文档并没有被释放,造成了资源占用的情况。(效果如图1)
3 解决方案
新增两句:
word.Quit()
pythoncom.CoUninitialize()
即改为:
def doc2pdf(doc_name, pdf_name):
"""
:word文件转pdf
:param doc_name word文件名称
:param pdf_name 转换后pdf文件名称
"""
pythoncom.CoInitialize()
root_path = r"D:\zihe.zhu\2020.01-task\webproject20200105" # 此处改成绝对位置
word = client.DispatchEx("Word.Application")
worddoc = word.Documents.Open(root_path + doc_name[1:], ReadOnly=1)
worddoc.SaveAs(root_path + pdf_name[1:], FileFormat=17)
worddoc.Close()
word.Quit()
pythoncom.CoUninitialize()
1)退出word,2)取消pythoncom的初始化。可以看到后台中没有word进程了。
CoInitialize()方法和DispathchEx() 为的是能够让这个程序在多线程使用,详情可以看下参考网站。
天才小呵呵 发布了11 篇原创文章 · 获赞 10 · 访问量 1万+ 私信 关注