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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

king110108

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值