Skip to content

Commit b1b55e6

Browse files
authored
ROB: Discard /I in choice fields for compatibility with Acrobat (#2614)
Closes #2611
1 parent 6819f86 commit b1b55e6

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

pypdf/_writer.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -987,6 +987,11 @@ def update_page_form_field_values(
987987
or writer_parent_annot.get("/T", None) == field
988988
):
989989
continue
990+
if (
991+
writer_parent_annot.get("/FT", None) == "/Ch"
992+
and "/I" in writer_parent_annot
993+
):
994+
del writer_parent_annot["/I"]
990995
if flags:
991996
writer_annot[NameObject(FA.Ff)] = NumberObject(flags)
992997
if isinstance(value, list):

tests/test_writer.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2217,3 +2217,16 @@ def test_init_without_named_arg():
22172217
assert len(writer._objects) == nb
22182218
writer = PdfWriter(by)
22192219
assert len(writer._objects) == nb
2220+
2221+
2222+
@pytest.mark.enable_socket()
2223+
def test_i_in_choice_fields():
2224+
"""Cf #2611"""
2225+
url = "https://github.com/py-pdf/pypdf/files/15176321/FRA.F.6180.150.pdf"
2226+
name = "iss2611.pdf"
2227+
writer = PdfWriter(BytesIO(get_data_from_url(url, name=name)))
2228+
assert "/I" in writer.get_fields()["State"].indirect_reference.get_object()
2229+
writer.update_page_form_field_values(
2230+
writer.pages[0], {"State": "NY"}, auto_regenerate=False
2231+
)
2232+
assert "/I" not in writer.get_fields()["State"].indirect_reference.get_object()

0 commit comments

Comments
 (0)