利用Python實現word文檔轉換成pdf文檔

原理

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章