0

0

使用Python做文档自动化生成_PDF与Word批量生成技巧

舞夢輝影

舞夢輝影

发布时间:2026-01-04 22:32:02

|

835人浏览过

|

来源于php中文网

原创

Python自动生成PDF和Word文档应选对库并理清模板逻辑:Word用python-docx替换.docx模板中的{字段};PDF按需选pdfkit(HTML转PDF)或ReportLab(精确排版)。

使用python做文档自动化生成_pdf与word批量生成技巧

用Python自动生成PDF和Word文档,核心在于选对库、理清模板逻辑、批量处理时注意路径和数据映射。不需要写复杂GUI或部署服务,几行代码就能把Excel里的客户信息变成百份合同或报告。

Word批量生成:python-docx + 模板占位符

最稳的方案是准备一个Word模板(.docx),里面用{姓名}、{日期}这类大括号标记可替换字段。python-docx不支持直接渲染复杂样式,但读取、替换、保存非常可靠。

  • Document("template.docx")加载模板,遍历所有段落和表格单元格,用.text.replace("{姓名}", "张三")做字符串替换
  • 表格里替换要特别注意:先定位到table.cell(row, col).paragraphs[0].text,再替换,避免漏掉隐藏换行符
  • 批量生成时,建议用os.path.join(output_dir, f"合同_{i+1}.docx")规范输出路径,防止中文乱码或权限问题

PDF生成:从简单到可控的三种路径

PDF生成分两类需求:一类是“把文字转成干净PDF”,适合报告、清单;另一类是“带样式/页眉页脚/多栏排版”,接近正式出版物。别一上来就啃ReportLab。

  • 纯文本/简单表格 → pdfkit(推荐):基于wkhtmltopdf,写个HTML模板(用Jinja2渲染),再调pdfkit.from_file("report.html", "out.pdf")。中文字体需在CSS里指定@font-face并确保系统有该字体文件
  • 精确控件位置 → ReportLab:适合发票、证书等固定版式。用逐个画元素,坐标单位是点(1/72英寸),记得y轴从下往上增长
  • 已有Word转PDF → python-docx + win32com(Windows)或libreoffice命令行(Linux/macOS):跨平台稍麻烦,但能100%保留原格式,适合签章前终稿转换

数据驱动+批量逻辑:别硬编码循环

真正省时间的是让一份脚本跑完全部文档,而不是手动改100次变量。关键是把数据源(CSV/Excel/数据库)和文档逻辑解耦。

Nanonets
Nanonets

基于AI的自学习OCR文档处理,自动捕获文档数据

下载

立即学习Python免费学习笔记(深入)”;

  • pandas.read_excel("data.xlsx")读客户表,用df.iterrows()逐行生成,每行对应一个文档
  • 给每个输出文件命名加业务标识:f"报价单_{row['客户编号']}_{row['日期'].strftime('%Y%m%d')}.pdf"
  • 加异常捕获:某条数据缺失字段时,用try/except跳过并记录日志,别让整个批量任务卡死

避坑提醒:中文字体、路径、样式一致性

90%的问题出在环境细节,不是代码逻辑。

  • Windows上python-docx默认用宋体,Linux可能显示为方块——在模板里提前设置好中文字体,或用run.font.name = "SimSun"显式指定
  • 相对路径容易在IDE和终端执行时不一致,统一用Path(__file__).parent / "templates"(pathlib)获取脚本所在目录
  • PDF里中文乱码?pdfkit必须配--enable-local-file-access参数,且HTML中和CSS字体声明缺一不可

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1567

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

649

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1204

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

193

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

131

2025.08.07

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

37

2026.03.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号