Skip to content

Commit

Permalink
support qualified names in update_page_form_field_values
Browse files Browse the repository at this point in the history
  • Loading branch information
xi committed Mar 8, 2023
1 parent 8b0f091 commit 8d5afe3
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions pypdf/_writer.py
Original file line number Diff line number Diff line change
Expand Up @@ -766,6 +766,22 @@ def appendPagesFromReader(
)
self.append_pages_from_reader(reader, after_page_append)

def _get_qualified_field_name(self, parent: DictionaryObject) -> str:
if "/TM" in parent:
return cast(str, parent["/TM"])
elif "/T" not in parent:
return None
elif "/Parent" in parent:
return (
self._get_qualified_field_name(
cast(DictionaryObject, parent["/Parent"])
)
+ "."
+ cast(str, parent["/T"])
)
else:
return cast(str, parent["/T"])

def update_page_form_field_values(
self,
page: PageObject,
Expand Down Expand Up @@ -799,7 +815,10 @@ def update_page_form_field_values(
if PG.PARENT in writer_annot:
writer_parent_annot = writer_annot[PG.PARENT]
for field in fields:
if writer_annot.get(FieldDictionaryAttributes.T) == field:
if (
writer_annot.get(FieldDictionaryAttributes.T) == field
or self._get_qualified_field_name(writer_annot) == field
):
if writer_annot.get(FieldDictionaryAttributes.FT) == "/Btn":
writer_annot.update(
{
Expand All @@ -823,7 +842,10 @@ def update_page_form_field_values(
)
}
)
elif writer_parent_annot.get(FieldDictionaryAttributes.T) == field:
elif (
writer_parent_annot.get(FieldDictionaryAttributes.T) == field
or self._get_qualified_field_name(writer_parent_annot) == field
):
writer_parent_annot.update(
{
NameObject(FieldDictionaryAttributes.V): TextStringObject(
Expand Down

0 comments on commit 8d5afe3

Please sign in to comment.