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

如何使用pypdf库将PDF可填写表单的复选框设为选中状态?

解决pypdf填写PDF复选框的问题

update_page_form_field_values这个方法是正确的,你没成功的核心原因是:PDF复选框的勾选状态需要匹配它内置的导出值,而不是通用的True/On这类字符串。每个PDF的复选框导出值可能不一样,得先搞清楚目标复选框的正确值是什么。

第一步:查出复选框的导出值

用pypdf解析原PDF的表单字段,筛选出复选框类型的字段并查看其导出值:

from pypdf import PdfReader

reader = PdfReader("你的表单文件.pdf")
fields = reader.get_fields()

# 遍历字段,找到复选框(/FT标记为/Btn)
for field_name, field_props in fields.items():
    if field_props.get("/FT") == "/Btn":
        print(f"字段名: {field_name}")
        # 导出值通常存于/Opt列表,第一个元素就是勾选对应的取值
        print(f"勾选对应值: {field_props.get('/Opt', ['未知'])[0]}")
        print("---")

运行后你就能看到目标复选框需要传入的具体值,比如可能是"/Yes"、"1"、"/On"或者其他自定义字符串。

第二步:用正确值填写复选框

拿到导出值后,直接把它传入update_page_form_field_values即可,比如查到导出值是"/On",代码如下:

writer.update_page_form_field_values(writer.pages[i], {key: "/On"})

必须保证传入的值和解析出来的完全一致,包括大小写、斜杠这类细节。

完整示例代码

from pypdf import PdfReader, PdfWriter

# 读取原表单
reader = PdfReader("input_form.pdf")
writer = PdfWriter()

# 复制所有页面到writer
for page in reader.pages:
    writer.add_page(page)

# 获取目标复选框的导出值
target_checkbox = "你的复选框字段名"
checkbox_value = reader.get_fields()[target_checkbox]["/Opt"][0]

# 填写复选框
writer.update_page_form_field_values(writer.pages[0], {target_checkbox: checkbox_value})

# 保存结果
with open("filled_form.pdf", "wb") as output_file:
    writer.write(output_file)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:48:13