python:word转pdf批量脚本

环境:python 3.6
平台:windows
打包了exe
下载下来,扔到放word文件的文件夹里,双击打开,会自动创建一个pdf文件夹,转换的pdf都在pdf文件夹里,速度不是很快,如果有word文档打开最好先关了,毕竟只是个简单的脚本,没那么智能

度云链接

链接:https://pan.baidu.com/s/199fOeUTT5kIFmuBVCHGBSw 
提取码:26rj 
复制这段内容后打开百度网盘手机App,操作更方便哦

change.py

# -*- coding:utf-8 -*-
'''
author:lanceadd
e-mail:[email protected]
'''

import os
from win32com.client import Dispatch, constants, gencache
basedir = os.path.abspath(os.path.dirname(__file__))
pdf_path = basedir + '/pdf'

# Word转换为PDF
def wordtopdf(filename):
    input = filename + '.docx'
    output = filename + '.pdf'
    pdf_name = output

    # 判断文件是否存在
    os.chdir(basedir)
    if not os.path.isfile(input):
        print(u'%s not exist' % input)
        return False
    # 文档路径需要为绝对路径,因为Word启动后当前路径不是调用脚本时的当前路径。
    if (not os.path.isabs(input)):  # 判断是否为绝对路径
        input = os.path.abspath(input)  # 返回绝对路径
    else:
        print(u'%s not absolute path' % input)
        return False

    if (not os.path.isabs(output)):
        os.chdir(pdf_path)
        output = os.path.abspath(output)
    else:
        print(u'%s not absolute path' % output)
        return False

    try:
        print(input, output)
        gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
        # 开始转换
        w = Dispatch("Word.Application")
        try:
            doc = w.Documents.Open(input, ReadOnly=1)
            doc.ExportAsFixedFormat(output, constants.wdExportFormatPDF, \
                                    Item=constants.wdExportDocumentWithMarkup,
                                    CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
        except:
            print(' exception')
        finally:
            w.Quit(constants.wdDoNotSaveChanges)

        if os.path.isfile(pdf_name):
            print('translate success')
            return True
        else:
            print('translate fail')
            return False
    except:
        print(' exception')
        return -1

if __name__ == '__main__':

    if not os.path.exists(pdf_path):
        os.makedirs(pdf_path)
    else:
        pass

    for dirpath, dirnames, filenames in os.walk(basedir):
        for file in filenames:
            fullpath = os.path.join(dirpath, file)
            print(fullpath, file)
            rc = wordtopdf(file.rstrip('.docx'))

我也尝试了改成多线程,但是报错不晓得为啥,等我解决了再发多线程加速版

你可能感兴趣的:(python:word转pdf批量脚本)