如何用Python的PyPDF2库勾选PDF中的单选按钮?
解决PyPDF2无法勾选PDF单选按钮的问题
问题分析
你用PyPDF2填充文本字段正常,但无法勾选名为“Case d'option 1”的单选按钮组(含5个选项),核心原因是你尝试的两种方式都不符合PyPDF2处理单选按钮的逻辑——单选按钮组不需要传入复杂字典或选项列表,直接给组名设置对应选项的导出值即可。
解决步骤
确认单选按钮的导出值
先运行以下代码,查看目标单选按钮组的详细信息,找到每个选项对应的导出值(/V字段):import PyPDF2 from PyPDF2 import PdfReader reader = PdfReader("c3.pdf") fields = reader.get_fields() # 遍历找到目标字段 for field_name, field_data in fields.items(): if field_name == "Case d'option 1": print("字段详情:", field_data) # 查看子选项的导出值 if "/Kids" in field_data: for kid in field_data["/Kids"]: kid_field = fields.get(kid) if kid_field: print(f"子选项值: {kid_field.get('/V')}, 显示文本: {kid_field.get('/Opt')}")运行后你会看到类似
/1、/2或者Choix1、Choix2这样的导出值,这就是勾选对应选项需要设置的值。修改填充代码
直接在update_page_form_field_values中给“Case d'option 1”赋值对应导出值即可,比如勾选第一个选项(假设导出值是/1):import PyPDF2 import os from PyPDF2 import PdfReader, PdfWriter os.chdir("D:\User\Desktop\fill_PDF_PY") reader = PdfReader("c3.pdf") writer = PdfWriter() page = reader.pages[0] writer.add_page(page) nomeid= "test" writer.update_page_form_field_values( writer.pages[0], { "Champ de texte 1": nomeid, "Champ de texte 5": "works1", "Champ de texte 6": "works2", "Champ de texte 8": "works3", "Champ de texte 144": "data in", "Champ de texte 143": "data out", "Case d'option 1": "/1" # 替换为你查到的第一个选项的导出值 # 若要勾选第二个选项,改为对应的值比如"/2"或"Choix2" } ) with open("filled-out5.pdf", "wb") as output_stream: writer.write(output_stream)
关键说明
- 单选按钮组共享同一个字段名,直接给组名赋值选中选项的导出值,PyPDF2会自动处理勾选逻辑。
- 不同PDF的单选按钮导出值格式可能不同,必须通过第一步的代码确认具体值,不能凭猜测填写。
内容的提问来源于stack exchange,提问作者Andy Ita
相关产品推荐
相关产品推荐

