使用Python将Word转PDF时如何解决'Call was rejected by callee'错误
问题分析与解决方法
代码本身的基础错误
你的代码存在两个明显的逻辑问题,是运行异常的前提:
- 变量定义顺序颠倒:
input_file和output_file在调用转换逻辑后才定义,导致执行Documents.Open时变量未赋值 - 未定义
doc_to_pdf函数:代码末尾直接调用了这个不存在的函数
COM错误(-2147418111)的原因与解决
这个错误本质是Word进程拒绝了COM调用,通常由以下情况导致:
- 后台有未关闭的Word进程,占用了COM接口
- Word弹出安全提示(如宏警告、文件格式兼容提示),阻塞了调用
- 脚本没有足够权限访问Word或目标文件路径
- Word未激活,后台弹出激活窗口
具体解决步骤
- 关闭所有Word进程:打开任务管理器,找到
WINWORD.EXE进程全部结束后再运行脚本 - 修正代码逻辑:调整变量顺序,直接执行转换逻辑,示例代码如下:
import comtypes.client # 先定义文件路径 input_file = "C:\\input.docx" output_file = "C:\\output.pdf" # 创建Word实例,开启可见模式可排查弹窗问题 word = comtypes.client.CreateObject('Word.Application') word.Visible = True try: doc = word.Documents.Open(input_file) # FileFormat=17对应PDF格式 doc.SaveAs(output_file, FileFormat=17) finally: doc.Close() word.Quit()
- 以管理员身份运行脚本:右键点击Python脚本或终端,选择“以管理员身份运行”
- 检查Word状态:确保Word已激活,手动打开Word确认没有激活提示、安全警告等弹窗
- 验证文件权限:确认输入文件存在,输出文件夹有写入权限,路径尽量避免特殊字符或中文(若有问题可尝试纯英文路径)
内容的提问来源于stack exchange,提问作者robster123
相关产品推荐
相关产品推荐

