前言

每天对着一堆 PDF 合并拆分、Word 改格式、手动做报表?重复操作又累又容易错,Python 几行代码就能全自动搞定!

这篇不讲废话、不搞应试,全是能直接用在工作 / 学习 / 小项目的干货,从读取、创建、批量生成到美化排版,一步一行讲明白,看完就能自己写自动化工具!


一、环境一键安装(必看第一步)

处理 PDF 和 Word 需要专用工具库,打开 CMD / 终端运行这行命令:

pip install PyPDF2 python-docx reportlab
  • PyPDF2:PDF 读取、合并、加密、拆分神器
  • python-docx:Word 创建、编辑、美化、做表格全能库
  • reportlab:从零生成全新 PDF,做报告专用

安装没报错,就可以直接开干!


二、PDF 全自动实战(逐行精讲 + 可直接运行)

1. 从 PDF 里提取文字(复制资料再也不用手打)

很多 PDF 不能复制、不能编辑,用 Python 直接把文字扒出来!

from PyPDF2 import PdfReader

def pdf_get_text(pdf_path):
    # 打开PDF文件,rb代表以二进制只读模式打开
    reader = PdfReader(pdf_path)
    # 准备一个空字符串存所有文字
    all_text = ""
    
    # 遍历PDF每一页
    for page in reader.pages:
        # 提取当前页文字
        page_text = page.extract_text()
        # 加到总文字里
        all_text += page_text + "\n"
    
    return all_text

# 调用函数,把你的PDF文件名填进去
content = pdf_get_text("测试文件.pdf")
# 打印前500个字看看效果
print(content[:500])

代码讲解

  1. PdfReader:专门用来读 PDF 的工具,不用自己解析复杂格式
  2. reader.pages:获取 PDF 所有页,循环就能一页页读
  3. page.extract_text():核心提取功能,自动把页面文字转成字符串
  4. 最终返回完整文本,可直接保存到 TXT/Word 里

2. 多个 PDF 一键合并(整理资料神器)

几十份 PDF 要合并成一个?Python 秒级完成!

from PyPDF2 import PdfReader, PdfWriter

def merge_pdf(pdf_files, save_name):
    # 创建一个空白PDF写入器
    writer = PdfWriter()
    
    # 遍历所有要合并的PDF
    for file in pdf_files:
        # 打开单个PDF
        reader = PdfReader(file)
        # 把每一页加到新PDF里
        for page in reader.pages:
            writer.add_page(page)
    
    # 保存最终合并后的文件
    with open(save_name, "wb") as f:
        writer.write(f)
    print("合并完成!")

# 使用示例,把你要合并的文件填进列表
merge_pdf(["1.pdf", "2.pdf", "3.pdf"], "合并完整版.pdf")

代码讲解

  • PdfWriter:相当于一个空白 PDF 本子,专门用来装内容
  • add_page(page):把其他 PDF 的页 “撕下来” 贴到新本子里
  • 最后write保存,支持任意数量 PDF 合并

3. PDF 加密保护(重要文件不被乱看)

给私密 PDF 设置密码,别人打不开,只有你能看!

from PyPDF2 import PdfReader, PdfWriter

def pdf_encrypt(input_file, output_file, pwd):
    reader = PdfReader(input_file)
    writer = PdfWriter()
    
    # 先把所有页复制过去
    for page in reader.pages:
        writer.add_page(page)
    
    # 设置密码加密
    writer.encrypt(pwd)
    
    # 保存加密文件
    with open(output_file, "wb") as f:
        writer.write(f)
    print("加密成功!")

# 使用
pdf_encrypt("原文件.pdf", "加密版.pdf", "123456")

代码讲解

  • encrypt(密码):一行给 PDF 上锁
  • 加密后打开必须输入密码,安全性拉满

4. 从零生成全新 PDF(自动做报告)

不用 Word、不用编辑器,Python 直接生成干净 PDF!

from reportlab.pdfgen import canvas

def create_new_pdf(save_path, content):
    # 创建一张PDF画布
    c = canvas.Canvas(save_path)
    # 画标题,坐标(100,750)代表从左100、从上750开始写
    c.drawString(100, 750, "Python自动生成PDF报告")
    # 画正文内容
    c.drawString(100, 720, content)
    # 保存文件
    c.save()
    print("PDF创建成功!")

# 使用
create_new_pdf("自动报告.pdf", "这是全自动生成的内容,不用手动打字!")

代码讲解

  • canvas.Canvas:创建空白 PDF 页面
  • drawString(x,y,文字):在指定位置写字
  • 可扩展加表格、图片、标题样式,做成专业报表

三、Word 自动化封神操作(逐行精讲 + 美化排版)

1. 读取 Word 全文(快速提取内容)

不管是报告、论文、简历,都能一键读出来!

from docx import Document

def read_word(file_path):
    # 打开Word文档
    doc = Document(file_path)
    full_text = ""
    
    # 遍历所有段落
    for para in doc.paragraphs:
        full_text += para.text + "\n"
    
    return full_text

# 使用
text = read_word("测试文档.docx")
print(text)

代码讲解

  • Document:打开 Word 的核心对象
  • paragraphs:Word 里的所有段落,循环就能全部提取
  • 自动保留格式结构,干净无乱码

2. 创建精美 Word(标题 + 正文 + 列表)

自动生成带格式的文档,不用手动调字体字号!

from docx import Document
from docx.shared import Pt

def create_beautiful_word():
    # 新建空白Word
    doc = Document()
    
    # ========== 添加标题 ==========
    title = doc.add_paragraph()
    title_run = title.add_run("Python自动化办公专业文档")
    # 设置字号18号、加粗
    title_run.font.size = Pt(18)
    title_run.bold = True
    
    # ========== 添加正文 ==========
    doc.add_paragraph("这是第一段正文内容,格式自动设置完成。")
    doc.add_paragraph("这是第二段正文内容,可无限添加。")
    
    # ========== 添加项目列表 ==========
    doc.add_paragraph("• 功能1:PDF全自动处理", style="List Bullet")
    doc.add_paragraph("• 功能2:Word批量生成", style="List Bullet")
    
    # 保存文件
    doc.save("自动生成文档.docx")
    print("Word创建成功!")

create_beautiful_word()

代码讲解

  • Pt(18):设置字体大小,对应 Word 里的字号
  • bold = True:文字加粗,突出标题
  • List Bullet:自动生成项目符号列表,格式工整

3. 批量生成邀请函 / 通知书(最强实用功能)

一份名单,自动生成每个人独立文档,1 秒搞定几十份!

from docx import Document

def make_invitation(name):
    doc = Document()
    # 标题
    doc.add_paragraph(f"尊敬的 {name} 先生/女士:").bold = True
    # 正文
    doc.add_paragraph("    诚挚邀请您参加本次活动,感谢您一直以来的支持与陪伴,期待您的莅临!")
    doc.add_paragraph("\n此致\n敬礼!")
    # 按姓名保存
    doc.save(f"邀请函_{name}.docx")

# 名单列表
name_list = ["张三", "李四", "王五", "赵六"]
# 循环批量生成
for name in name_list:
    make_invitation(name)

print("所有邀请函生成完毕!")

代码讲解

  • 循环遍历名单,自动替换姓名
  • 每份文档独立命名,不混乱、不重名
  • 可扩展加日期、编号、单位名称,做成正式文件

4. Word 里自动做表格(成绩 / 清单 / 报表)

不用手动画表格,Python 一键生成规整表格!

from docx import Document

def create_word_table():
    doc = Document()
    doc.add_paragraph("学生成绩表").bold = True
    
    # 4行3列表格
    table = doc.add_table(rows=4, cols=3)
    table.style = "Table Grid"
    
    # 表头
    h_cells = table.rows[0].cells
    h_cells[0].text = "姓名"
    h_cells[1].text = "年龄"
    h_cells[2].text = "成绩"
    
    # 填入数据
    data = [["小明", "18", "95"], ["小红", "18", "98"], ["小刚", "18", "92"]]
    for i, row_data in enumerate(data, 1):
        cells = table.rows[i].cells
        cells[0].text = row_data[0]
        cells[1].text = row_data[1]
        cells[2].text = row_data[2]
    
    doc.save("成绩表.docx")
    print("表格生成完成!")

create_word_table()

代码讲解

  • add_table(行,列):创建指定大小表格
  • Table Grid:自带边框,打开就是完整表格
  • 循环填数据,支持批量导入 Excel 内容

四、三大爆款实战项目

项目 1:PDF 全自动整理工具

功能:

  • 扫描文件夹所有 PDF
  • 自动提取文字
  • 按关键词分类移动到不同文件夹适用:资料整理、论文归档、批量处理

项目 2:每日自动报告生成器

功能:

  • 读取数据
  • 自动生成 Word
  • 一键转 PDF适用:工作日报、周报、统计报表

项目 3:批量通知书制作系统

功能:

  • 导入名单
  • 自动填充姓名、日期、编号
  • 批量导出独立文档适用:学校、公司、活动组织

五、全文总结(看完就能用)

Python 办公自动化真的简单又暴力:

  • PDF:提取、合并、加密、新建,全部几行搞定
  • Word:读取、创建、美化、批量、做表格,全能适用
  • 不用复杂逻辑,复制代码改文件名就能运行
  • 每天节省 1~2 小时重复劳动,效率直接起飞

不用再手动复制粘贴、不用再熬夜做报表,Python 就是办公神器!

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐