我遇到了同样的问题,找了好几个地方,很失望我找不到答案。在看了我的代码、pyPDF2代码和adobef1.7规范之后,我终于弄明白了。如果调试到updatePageFormFieldValues,您将看到它只使用TextStringObjects。复选框不是文本字段,甚至/V值也不是文本字段,这至少在我看来是违反直觉的。对该函数的调试表明,复选框是NameObjects,因此我创建了自己的函数来处理它们。我创建了两个dict:一个只包含传递给内置updatePageFormFieldValues函数的文本值,另一个只有checkbox值。我还设置了/AS以确保可见性(参见PDF规范)。我的功能如下:def updateCheckboxValues(page, fields):
for j in range(0, len(page['/Annots'])):
writer_annot = page['/Annots'][j].getObject()
for field in fields:
if writer_annot.get('/T') == field:
writer_annot.update({
NameObject("/V"): NameObject(fields[field]),
NameObject("/AS"): NameObject(fields[field])
})
但是,据我所知,使用/1、/On还是/Yes取决于表单是如何定义的,或者PDF阅读器需要什么。对我来说,/1有效。在