0

したがって、3 つのフォームを含む 1 つのファイルがありますが、そのうちの 2 つはまったく同じフィールドを使用し、同じタグ フィールドを持っています。例: Name1 = フォーム 1 の名前、Name1 = フォーム 2 の名前。3 番目の名前は Name3 です。これは、最初の 2 つのフォームがユーザー用で、もう 1 つはベンダー用であるためです。何らかの理由で、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}}

私が今見つけた問題は、抽出されたフィールドが重複した値を抽出していないということです。注釈ループの注釈については、私が理解する必要があるものです。

4

0 に答える 0