所以我有 1 个包含 3 个表单的文件,但其中 2 个使用完全相同的字段并具有相同的标签字段。示例:名称 1 = 表格 1 的名称,名称 1 = 表格 2 的名称。第 3 个名称的名称为 Name3。这是因为前两种形式,一种是供用户保留的,另一种是供供应商使用的。出于某种原因,只有第 3 个会填充标签,前 2 个表单没有显示任何内容。这是我的代码。
class PDFKeyMappings:
ANNOT_KEY = '/Annots'
ANNOT_FIELD_KEY = '/T'
ANNOT_VAL_KEY = '/V'
ANNOT_RECT_KEY = '/Rect'
SUBTYPE_KEY = '/Subtype'
WIDGET_SUBTYPE_KEY = '/Widget'
PARENT_WIDGET_NUM = '/Parent'
with open(template_filename, "rb") as pdf:
tags = pdf_forms_helpers.check_template_tags(pdf, tags)
这是我的辅助功能。
def check_template_tags(template_pdf, tags):
def search_pdf_tags(pdf_tags):
for tag, tag_data in list(pdf_tags.items()):
print("tag items are: ", list(pdf_tags.items()))
pdf_tags[tag]["is_used"] = (f"{tag}" in extracted_fields)
if tag_data.get("child_nodes"):
search_pdf_tags(tag_data["child_nodes"])
output_pdf = update_annotation_key(template_pdf)
pdf_reader = pdfrw.PdfReader(output_pdf)
extracted_fields = []
for page in range(len(pdf_reader.pages)):
annotations = pdf_reader.pages[page][PDFKeyMappings.ANNOT_KEY]
if not annotations:
continue
for annotation in annotations:
if annotation[PDFKeyMappings.SUBTYPE_KEY] != PDFKeyMappings.WIDGET_SUBTYPE_KEY or not annotation[PDFKeyMappings.ANNOT_FIELD_KEY]:
continue
extracted_fields.append(annotation[PDFKeyMappings.ANNOT_FIELD_KEY][1:-1].lower())
search_pdf_tags(tags)
print("tags being returned are: ", tags)
return tags
这是 for 循环之后的打印内容。
tag items are: [('Name1', {'is_used': False}), ('Name3', {'is_used': False})]
这就是返回的标签的打印内容。
tags being returned are: {'Name1': {'is_used': False}, 'Name3': {'is_used': True}}
我现在发现的问题是提取的字段没有提取重复值。对于注释循环中的注释是我需要弄清楚的。