原理
使用python win32 库 调用word底层vba,将word转成pdf
安装pywin32
pip install pypiwin32
Python完整代码
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/28 10:48
# @Author : King110108
# @File : word2pdf.py
# @Description:
# @IDE : PyCharm
import sys, os
from win32com.client import Dispatch, constants, gencache
def doc2pdf(input, output):
w = Dispatch("Word.Application")
try:
doc = w.Documents.Open(input, ReadOnly=1)
doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
return 0
except:
return 1
finally:
w.Quit(constants.wdDoNotSaveChanges)
# Generate all the support we can.
def GenerateSupport():
# enable python COM support for Word 2007
# this is generated by: makepy.py -i "Microsoft Word 12.0 Object Library"
gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
def main():
#print(len(sys.argv)) #len(sys.argv)=1
if (len(sys.argv) == 2):
input = sys.argv[1]
output = os.path.splitext(input)[0] + '.pdf'
elif (len(sys.argv) == 3):
input = sys.argv[1]
output = sys.argv[2]
else:
input = r'.\个人简历.doc' # word文档的名称
output = r'.\个人简历.pdf' # 生成的pdf文档的名称
if (not os.path.isabs(input)):
input = os.path.abspath(input)
if (not os.path.isabs(output)):
output = os.path.abspath(output)
try:
GenerateSupport()
rc = doc2pdf(input, output)
print("converting finished.")
return rc
except:
return -1
if __name__ == '__main__':
print("The source doc file is converting.....")
rc = main()
if rc:
sys.exit(rc)
sys.exit(0)