Python—docx 批量处理 docx2pdf 文件

使用Python3.X 批量将文件夹中的所有docx文档转为PDF

代码示例:
以下处理的.docx文件由这篇文章代码产生:https://blog.csdn.net/wsp_1138886114/article/details/96508728

from win32com import client as wc
import os


def get_docx(input_Docxs):
    DocxPaths = []
    for root,dirs,filenames in os.walk(input_Docxs):
        for filename in filenames:
            if filename.endswith(('.docx','.doc')):
                DocxPaths.append(root+'/'+filename)
    return DocxPaths

def docx2pdf(input_Docxs,pdf_path):
    DocxPaths = get_docx(input_Docxs)
    print('DocxPaths',DocxPaths)
    word = wc.Dispatch('Word.Application')
    word.Visible = 0

    for docx_path in DocxPaths:
        pdf_name = pdf_path+'/'+docx_path.split('/')[-1][:-5]+'.pdf'
        try:
            doc = word.Documents.Open(docx_path)
            doc.SaveAs(pdf_name, 17)  # 直接保存为PDF文件
            doc.Close()
        except:
            print('%s 转换失败' % docx_path)
    word.Quit()


if __name__ == '__main__':
    input_Docxs = 'D:\\python_script\\office_docx_pdf'
    pdf_path = 'D:\\python_script\\office_docx_pdf'
    docx2pdf(input_Docxs, pdf_path)

使用以下写法,代码报错,暂时未找到原因,望各位看官不吝赐教

from win32com.client import Dispatch, constants, gencache, DispatchEx
import os


def get_docx(input_Docxs):
    DocxPaths = []
    for root, dirs, filenames in os.walk(input_Docxs):
        for filename in filenames:
            if filename.endswith(('.docx', '.doc')):
                DocxPaths.append(root + '/' + filename)
    return DocxPaths


def docx2pdf(input_Docxs, pdf_path):
    DocxPaths = get_docx(input_Docxs)

    for docx_path in DocxPaths:

        gencache.EnsureModule('{00020905-0000-0000-C000-000000000046}', 0, 8, 4)
        word = Dispatch('Word.Application')
        word.Visible = 0
        doc = word.Documents.Open(docx_path, ReadOnly=1)
        pdf_name = pdf_path + '/' + docx_path.split('/')[-1][:-4] + '.pdf'

        try:
            doc.ExportAsFixedFormat(pdf_name, constants.wdExportFormatPDF,
                                    Item=constants.wdExportDocumentWithMarkup,
                                    CreateBookmarks=constants.wdExportCreateHeadingBookmarks)

            word.Quit(constants.wdDoNotSaveChanges)
        except:
            print('%s 转换失败' % docx_path)



if __name__ == '__main__':
    input_Docxs = '../office_docx_pdf'
    pdf_path = '../office_docx_pdf'
    docx2pdf(input_Docxs, pdf_path)

'''
pywintypes.com_error: (-2147352567, '发生意外。', (0, 'Microsoft Word', '很抱歉,找不到您的文件。
该项目是否已移动、重命名或删除?\r(C:\\Users\\XXX\\...\\demo_张三.docx)', 'wdmain11.chm', 24654, -2146823114), None)
'''
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SongpingWang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值