Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed

Python win32com.client.Dispatch打开Word文档并导出为 PDF时失败Command failed
输出异常:

(-2147352567, 'Exception occurred.', (0, u'Microsoft Word', u'Command failed', u'wdmain11.chm', 36966, -2146824090), None)

调试之后,主要是下面几个原因:

  1. 路径不存在,Python win32模块调用word应用的saveas函数,不会自动创建不存在的路径,如果如果路劲不存在就会报这个错误。

解决办法,就是先判断路径是否存在,不存在就创建。

    if not os.path.exists(output_file):
        os.makedirs(output_file)
  1. word应用没有被关闭,或者其他应用正在使用,导致冲突。

解决办法,查看任务管理器,然后找到word应用的进程,杀死即可。

下面附上完整代码:

import datetime
import os

import win32com.client as win32
from docx import Document


def convert_to_pdf(input_path,in_flie_name,output_path,out_flie_name):
    # 创建Word应用程序实例
    # word_app = win32.gencache.EnsureDispatch('Word.Application')
    word_app = win32.DispatchEx("Word.Application")
    # 设置应用程序可见性为False(不显示Word界面)
    word_app.Visible = False

    try:
        # 打开Word文档
        doc = word_app.Documents.Open(input_path + in_flie_name)
        # 保存为PDF
        if not os.path.exists(output_file):
        	os.makedirs(output_file)
        
        doc.SaveAs(output_path + out_flie_name, FileFormat=17)
        doc.Close()
        return True
    except Exception as e:
        print("转换失败:" + str(e))
        return False
    finally:
        # 关闭Word应用程序
        word_app.Quit()
  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
win32com.client.DispatchPython中的一个函数,它用于创建和连接到COM服务器对象。COMComponent Object Model)是一种微软开发的组件对象模型,是一种用于实现软件组件互操作的技术。通过COM,可以在不同的程序之间共享对象,并且这些对象可以在不同的语言中编写。 在Python中,使用win32com.client.Dispatch函数可以连接到COM服务器并创建COM对象。该函数的语法如下: ```python win32com.client.Dispatch(prog_id=None, clsid=None, machine=None, userName=None, password=None, typeinfo=None) ``` 其中,参数prog_id指定要创建的COM对象的程序标识符(Program ID),clsid指定要创建的COM对象的类标识符(Class ID),machine指定COM服务器所在的计算机名,userName和password指定连接到COM服务器的用户名和密码,typeinfo指定类型信息(Type Information)。 例如,下面的代码创建一个Excel应用程序对象: ```python import win32com.client excel = win32com.client.Dispatch('Excel.Application') ``` 这段代码中,'Excel.Application'是Excel应用程序的ProgID,通过调用win32com.client.Dispatch函数并传入该ProgID,可以创建一个Excel应用程序对象。然后,可以使用该对象来操作Excel应用程序,比如打开一个工作簿、读写单元格等。 总之,win32com.client.Dispatch函数是Python中连接到COM服务器并创建COM对象的重要函数,它为Python程序员提供了方便的方式来操作COM服务器上的对象。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

张飞的猪大数据

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

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

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

打赏作者

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

抵扣说明:

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

余额充值