当前位置:首页>python>Python与办公自动化 | Word批量转PDF

Python与办公自动化 | Word批量转PDF

  • 2026-09-09 13:29:16
Python与办公自动化 | Word批量转PDF
Python 作为“自动化胶水语言”,非常适合用来处理重复性高、规则明确、数据量大的工作,在涉及大量excel、word等操作的办公流程中效果还挺不错的。
今天我们看一个利用Python批量将word文档转换为PDF格式的方法。核心思路也不复杂:
  1. 遍历指定文件夹下的所有 .docx 文件。
  2. 后台静默启动 Word 应用程序。
  3. 逐个打开文档并另存为 PDF。
  4. 关闭文档,最后退出 Word。
这么看,其实和我们手动转换的操作流程是一样的,但是交给Python之后,就可以在非常短的时间内批量完成了~
代码如下,可直接运行
import osimport globimport win32com.client as win32from pathlib import Pathdef word_to_pdf_batch(input_folder, output_folder):    """    批量将文件夹内的 Word 文档转换为 PDF    :param input_folder: 存放 Word 文档的文件夹路径    :param output_folder: 存放生成 PDF 的文件夹路径    """    # 1. 创建输出文件夹(如果不存在)    Path(output_folder).mkdir(parents=True, exist_ok=True)    # 2. 获取所有 docx 文件    # 支持 .docx 和 .doc (建议尽量使用 .docx)    word_files = glob.glob(os.path.join(input_folder, "*.docx"))     # 如果需要兼容老版本 .doc,可以取消下面这行的注释    # word_files += glob.glob(os.path.join(input_folder, "*.doc"))    if not word_files:        print("❌ 未在文件夹中找到任何 Word 文档。")        return    print(f"📂 找到 {len(word_files)} 个文件,开始转换...")    # 3. 启动 Word 应用程序 (后台运行)    word = win32.Dispatch('Word.Application')    word.Visible = False  # 关键:设置为不可见,避免弹窗干扰    word.DisplayAlerts = False # 关闭警告提示    try:        for i, word_path in enumerate(word_files, 1):            file_name = os.path.basename(word_path)            base_name = os.path.splitext(file_name)[0]            pdf_path = os.path.join(output_folder, f"{base_name}.pdf")            print(f"[{i}/{len(word_files)}] 正在转换:{file_name} ...", end='\r')            # 打开文档            doc = word.Documents.Open(word_path)            # 另存为 PDF            # wdFormatPDF = 17 是 Word 常量,代表 PDF 格式            doc.SaveAs2(FileName=pdf_path, FileFormat=17)            # 关闭文档,不保存更改            doc.Close(False)        print("\n✅ 全部转换完成!")    except Exception as e:        print(f"\n❌ 转换过程中发生错误:{e}")    finally:        # 4. 无论成功失败,务必退出 Word 进程,防止后台残留        word.Quit()        print("Word 进程已关闭。")# ================= 配置区域 =================if __name__ == "__main__":    # 请修改这里为你的实际文件夹路径    # 建议使用绝对路径,例如:C:/Users/YourName/Desktop/Docs    input_dir = r"./input_docs"   # 放 Word 文件的文件夹    output_dir = r"./output_pdfs" # 生成的 PDF 存放文件夹    # 为了演示,如果文件夹不存在则自动创建示例文件逻辑略去,请确保 input_dir 里有文件    if not os.path.exists(input_dir):        os.makedirs(input_dir)        print(f"已创建输入文件夹:{input_dir},请将 Word 文件放入其中再运行。")    else:        word_to_pdf_batch(input_dir, output_dir)

🔍 代码关键点解析

  1. word.Visible = False: 这是提升体验的关键。如果不加这一行,转换时你的屏幕上会疯狂闪烁 Word 窗口,甚至无法操作其他软件。设置为 False 后,它就会在后台“悄悄”干活了。
  2. FileFormat=17: 在 Word 的宏录制中,17 代表导出为 PDF。这是硬编码的常量,比导入一堆常量库更直接有效。
  3. finally 块的重要性: 如果代码运行报错后会忘记关闭 Word,那么会导致任务管理器里残留一堆 WINWORD.EXE 进程,占用内存甚至导致下次无法打开 Word。而finally 确保了即使中途出错,Word 也会被强制关闭。
  4. 路径处理: 使用了 pathlib 和 os.path 来处理路径,避免了 Windows 上常见的反斜杠 \ 转义问题(所以路径前加了 r)。
只需调整第64,65行改成你自己的目录就可以用起来了~
技术的价值不在于代码有多复杂,而在于它是否真正解决了问题。

过往文章/合集

合集

文章

Python编程小技巧

Python编程小技巧--用Python查询天气

Python编程小技巧--定制你的gif动图

Python--数据/图像可视化

Python编程小技巧--雷达图

报表"不直观"?20行Python代码做出高颜值KPI仪表盘,惊艳全场!

Python数据可视化--绘制树状图(电商品类销售分析)

Python编程基础算法

Python编程基础算法--斐波那契数列的矩阵算法

Python编程基础算法--LeetCode编辑距离问题

细数那些经典教材

细数那些经典教材--算法与数据结构

细数那些经典教材--编程竞赛

细数那些经典教材--机器学习入门就劝退?这几本“神书”帮你少走弯路!

细数那些经典科普书 | 量子物理史话与薛定谔的猫

Python库巡礼

Python库巡礼--PySpark

Python 库巡礼 | Plotly:让数据"动"起来

Python与数学之美

Python与数学之美--可视化理解导数本质

Python与数学之美--星形线(来自300年前的"完美曲线")

Python与数学之美 | 黎曼和积分

Python与办公自动化
Python与办公自动化--批量生成报告/通知
Python与办公自动化--核对两张万行数据表的差异
Python与办公自动化--PDF的合并与拆分
计算机科学人物志
计算机科学人物志--图灵(理论起源)
计算机科学人物志 | Dijkstra:在混乱的世界里构建秩序

最新文章

随机文章