news 2026/3/31 16:02:24

Python---实战拒绝加班!3行代码实现Word批量转PDF

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python---实战拒绝加班!3行代码实现Word批量转PDF

摘要:还在一个个打开Word点击“另存为PDF”?本文教你使用Python的docx2pdf库,仅需3行代码,即可瞬间完成成百上千个文档的格式转换。无废话,直接上实战。


0. 为什么写这篇文章?

昨天快下班时,同事发来一个文件夹,里面有50份合同(.docx),需要全部转成PDF发给客户。如果手动打开->另存为->关闭,至少需要半小时,还容易手抖点错。

使用Python,这只是30秒的事情。

1. 环境准备

我们需要用到一个神器库:docx2pdf

前置条件:

  1. 电脑上安装了 Python 3.x。

  2. 电脑上安装了 Microsoft Word(因为该库在Windows下调用Word的COM接口,在Mac下调用JXA)。

安装命令:

打开终端(CMD/PowerShell/Terminal),输入:

Bash

pip install docx2pdf

2. 实战演练

场景一:转换单个文件

如果你只想转换一个特定的文件,代码非常简单。

新建文件one_file.py

Python

from docx2pdf import convert # 语法:convert("原文件路径", "目标文件路径") convert("offer_letter.docx", "offer_letter.pdf") print("转换完成!")

场景二:批量转换整个文件夹(核心实战)

这是最常用的场景。你只需要指定文件夹路径,脚本会自动识别里面所有的.docx文件并将其转换为PDF,保存在同一目录下。

新建文件batch_convert.py

Python

from docx2pdf import convert import os # 定义你的文件夹路径 (Windows下注意路径中的斜杠) folder_path = r"C:\Users\Admin\Desktop\Contracts" print(f"开始转换文件夹: {folder_path} ...") # 一行代码搞定整个文件夹的转换 convert(folder_path) print("所有文件转换完毕!")

注意:Windows用户建议在路径字符串前加r,防止转义字符报错。


3. 进阶:带进度条的转换(看起来更专业)

虽然上面的代码能用,但如果文件很多,我们想知道进度怎么办?docx2pdf自带进度条显示,但如果我们想结合tqdm(Python最美进度条库) 自己写逻辑,可以这样控制:

安装 tqdm:

Bash

pip install tqdm

完整代码:

Python

import os from docx2pdf import convert from tqdm import tqdm def batch_convert_with_progress(target_folder): # 获取文件夹内所有docx文件 files = [f for f in os.listdir(target_folder) if f.endswith('.docx')] if not files: print("该目录下没有Word文档。") return print(f"共发现 {len(files)} 个文件,准备开始转换...") # 使用进度条循环 for filename in tqdm(files, desc="转换进度"): docx_path = os.path.join(target_folder, filename) pdf_path = os.path.join(target_folder, filename.replace(".docx", ".pdf")) # 转换单个文件 try: convert(docx_path, pdf_path) except Exception as e: print(f"文件 {filename} 转换失败: {e}") if __name__ == "__main__": # 替换为你自己的文件夹路径 my_folder = r"C:\Users\Admin\Desktop\TestFiles" batch_convert_with_progress(my_folder)

运行效果:

你会在控制台看到一个动态的进度条,实时显示处理了多少个文件。


4. 避坑指南

在实战中,可能会遇到以下两个常见问题:

  1. 报错CoInitialize has not been called

    • 原因:通常发生在多线程操作中。

    • 解决:本文的单线程脚本一般不会出现。如果出现,只需使用pythoncom.CoInitialize()初始化即可。

  2. Word卡死或报错

    • 原因:转换过程中请不要手动打开Word文档,否则会冲突。

    • 建议:运行脚本前,关闭所有Word窗口。


5. 总结

别再做“文档搬运工”了。通过docx2pdf库:

  • 1行代码convert("文件夹路径")即可实现批量转换。

  • 0 理论:不需要了解底层的PDF编码原理。

  • 100% 效率:留出更多时间去学习新技术(或者摸鱼)。

赶紧把这个脚本保存起来,下次遇到批量任务时直接运行!


下一步建议

您希望我为您提供关于“如何使用 Python 自动发送带附件的邮件”的教程吗?这样就可以实现“自动转换 -> 自动发送”的全自动化流程了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/31 1:29:38

Inventor 二次开发从入门到精通(9)

Inventor 的原生界面可通过 API 进行深度定制,包括添加功能区按钮、自定义对话框、创建右键菜单等,使开发的插件更符合用户的操作习惯,提升工具的易用性。本章将讲解 Inventor 用户界面(UI)的核心对象模型,…

作者头像 李华
网站建设 2026/3/27 17:10:35

我与C++的初遇:一段跨越时光的编程情缘

我与C的初遇:一段跨越时光的编程情缘在那个阳光斑驳的午后,一本厚重的《C Primer》悄然翻开了我与编程的不解之缘。从最初对“Hello, World!”的简单尝试,到如今在复杂项目中的游刃有余,C不仅是我探索数字世界的钥匙,更…

作者头像 李华
网站建设 2026/3/25 17:11:04

EmotiVoice语音重音标记功能提升信息传达效率

EmotiVoice语音重音标记功能提升信息传达效率 在智能语音助手念出“请立即前往红色大门”时,如果你没听清“红色”,可能错过关键任务线索;在客服机器人平铺直叙地说完“您的订单已取消”时,用户甚至可能误以为服务仍在继续。这些看…

作者头像 李华
网站建设 2026/3/23 2:38:08

这周末,Pulsar 与您相约 COSCon‘25 开源集市!

COSCon25 第十届中国开源年会,将于 2025 年 12 月 6-7 日,在北京市海淀区丽亭华苑酒店举办。本次大会的主题是:「众智开源 Open Source, Open Intelligence」!📅 活动时间:2025 年 12 月 6-7 日…

作者头像 李华
网站建设 2026/3/26 1:10:07

CLion 12月最新2025.3 安装、授权、使用说明

2025-12-17亲测支持最新版本2025.3支持在线更新支持Windows、MAC、Linux 一 下载安装、更新 1. 官网下载最新版安装。 https://www.jetbrains.com/zh-cn/clion/ 安装后以后先不要运行程序。 2. 如果已安装,则直接更新到最新版本即可。如果更新后激活失效&#xff…

作者头像 李华
网站建设 2026/3/28 7:09:03

穿越成诗圣,离不开:诗词小能手

穿越成诗圣,离不开:诗词小能手场景引入智能体是什么腾讯元器创建智能体创建工作流开始节点大模型知识问答1大模型知识问答2回复节点结束节点调试工作流启用工作流配置智能体模式选择应用配置的区别配置智能体测试智能体发布智能体在线体验最后总结链接分…

作者头像 李华