You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python的PyPDF2将CSV数据填充至已有空白表单PDF?

问题与解答

1. 关于官网示例的误解

你没误解官网示例——PyPDF2确实没法直接“修改”原有PDF,因为PDF的文件结构决定了它是只读格式。所有的“修改”操作本质都是读取原PDF内容,通过PdfWriter构建新的PDF文档,写入填充后的内容后生成新文件。官网示例的逻辑就是基于已有表单模板生成填充后的新PDF,和你的需求完全匹配。

2. 你的思路完全可行

通过PyPDF2识别已有PDF的表单字段,再循环遍历CSV数据插入匹配信息的思路完全没问题。核心需要解决的是CSV表头和PDF字段名不完全一致的问题,只要提前建立两者的映射关系即可。

3. 优化后的代码实现

原代码存在冗余(重复实例化PdfReader)和无效代码(fields == {"key": "value"...}是比较语句,无实际作用),下面是修正并优化后的代码:

import csv
from PyPDF2 import PdfReader, PdfWriter

# --------------------------
# 核心:建立CSV表头与PDF字段的映射
# 请根据实际情况修改键值对
# 键:CSV表头的字段名;值:PDF表单对应的字段名
CSV_TO_PDF_MAP = {
    "Google表单姓名": "pdf_name_field",
    "Google表单邮箱": "pdf_email_field",
    "Google表单电话": "pdf_phone_field"
}
# --------------------------

# 读取CSV数据
with open("AfF.csv", "r", encoding="utf-8") as csv_file:
    # 用DictReader可直接通过表头字段名取值,更适配字段映射场景
    csvreader = csv.DictReader(csv_file)
    rows = list(csvreader)

# 读取PDF模板并打印所有字段名,方便核对映射关系
pdf_reader = PdfReader("form.pdf")
print("PDF表单所有字段:", pdf_reader.get_form_text_fields().keys())

# 循环处理每一行CSV数据,生成独立的填充PDF
for index, row in enumerate(rows):
    # 构建PDF填充用的字段字典
    fill_data = {}
    for csv_key, pdf_key in CSV_TO_PDF_MAP.items():
        # 若CSV中无对应值,默认填充空字符串
        fill_data[pdf_key] = row.get(csv_key, "")
    
    # 创建PdfWriter并填充表单
    pdf_writer = PdfWriter()
    page = pdf_reader.pages[0]
    pdf_writer.add_page(page)
    
    # 更新表单字段值
    pdf_writer.update_page_form_field_values(pdf_writer.pages[0], fill_data)
    
    # 保存填充后的PDF(按索引命名,避免文件覆盖)
    output_filename = f"filled_form_{index+1}.pdf"
    with open(output_filename, "wb") as output_stream:
        pdf_writer.write(output_stream)
    print(f"已生成填充后的PDF:{output_filename}")

代码关键点说明:

  • 使用csv.DictReader:无需手动处理表头索引,直接通过CSV表头字段名获取对应行的数据,更适配字段映射的场景
  • 字段映射字典:这是实现CSV与PDF字段匹配的核心,运行代码后先查看打印的PDF字段名,再和CSV表头一一对应修改CSV_TO_PDF_MAP
  • 批量生成独立文件:通过循环遍历每一行CSV数据,生成单独的填充PDF,避免文件被覆盖
  • 容错处理:用row.get(csv_key, "")确保即使CSV中缺少某个字段,程序也不会报错,而是填充空字符串

内容的提问来源于stack exchange,提问作者Felicia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 19:37:47