Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python在PDF中选中复选框和单选按钮?_Python_Pdf_Pdfrw - Fatal编程技术网

如何使用Python在PDF中选中复选框和单选按钮?

如何使用Python在PDF中选中复选框和单选按钮?,python,pdf,pdfrw,Python,Pdf,Pdfrw,我需要使用Python来填充一个完整的PDF文件,但我已经搜索了8个小时,我能找到的只是如何只填充PDF文件中的文本字段。我需要填写复选框,并使用单选按钮,您可以选择一个,但不能选择另一个,如是或否单选按钮或性别单选按钮 下面是我在pdfrwpython模块中使用的代码 import pdfrw template_pdf = pdfrw.PdfReader("template.pdf") ANNOT_KEY = '/Annots' ANNOT_FIELD_KEY = '/

我需要使用Python来填充一个完整的PDF文件,但我已经搜索了8个小时,我能找到的只是如何只填充PDF文件中的文本字段。我需要填写复选框,并使用单选按钮,您可以选择一个,但不能选择另一个,如是或否单选按钮或性别单选按钮

下面是我在pdfrwpython模块中使用的代码

import pdfrw

template_pdf = pdfrw.PdfReader("template.pdf")

ANNOT_KEY = '/Annots'
ANNOT_FIELD_KEY = '/T'
ANNOT_VAL_KEY = '/V'
ANNOT_RECT_KEY = '/Rect'
SUBTYPE_KEY = '/Subtype'
WIDGET_SUBTYPE_KEY = '/Widget'

def fillPDF(data_dict):
    for page in template_pdf.pages:
        annotations = page[ANNOT_KEY]
        for annotation in annotations:
            if annotation[SUBTYPE_KEY] == WIDGET_SUBTYPE_KEY:
                if annotation[ANNOT_FIELD_KEY]:
                    key = annotation[ANNOT_FIELD_KEY][1:-1]
                    if key in data_dict.keys():
                        if type(data_dict[key]) == bool:
                            if data_dict[key] == True:
                                annotation.update(pdfrw.PdfDict(AS=pdfrw.PdfName('Yes')))
                        else:
                            annotation.update(pdfrw.PdfDict(V='{}'.format(data_dict[key])))
                        annotation.update(pdfrw.PdfDict(AP=''))
                    else:
                        print(key)

    template_pdf.Root.AcroForm.update(pdfrw.PdfDict(NeedAppearances=pdfrw.PdfObject('true')))
    pdfrw.PdfWriter().write("output.pdf", template_pdf)
这段代码应该填充文本字段和复选框,但它不适用于复选框,甚至不检测单选按钮


如果你有办法用python检查单选按钮和复选框,请告诉我。谢谢。我也有同样的问题。我似乎不知道发生了什么事。也许pdfrw文档可能有另一个功能可以用来替代fillPDF,但我不太确定。

不管怎样,我解决了它。我刚刚发现什么地方出了问题什么地方出了问题?请告诉我!