Skip to content

Commit 82ebd03

Browse files
committed
ENH: PdfWriter: Test adding unicode font resource for form filling
1 parent e43c57d commit 82ebd03

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

tests/test_writer.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
PdfWriter,
2020
Transformation,
2121
)
22+
from pypdf._font import HAS_FONTTOOLS
2223
from pypdf.annotations import Link
2324
from pypdf.errors import DeprecationError, PageSizeNotDefinedError, PdfReadError, PyPdfError
2425
from pypdf.generic import (
@@ -1728,6 +1729,33 @@ def test_update_form_fields2(caplog):
17281729
assert "Text string 'شهرزاد' contains characters not supported by font encoding." in caplog.text
17291730

17301731

1732+
@pytest.mark.enable_socket
1733+
def test_update_form_fields3():
1734+
if HAS_FONTTOOLS:
1735+
url = "https://github.com/user-attachments/files/21073581/CERERE.INMATRICULARE.form.pdf"
1736+
name = "iss3361.pdf"
1737+
writer = PdfWriter()
1738+
writer.append(BytesIO(get_data_from_url(url, name=name)))
1739+
data = {
1740+
"subsemnatul": "Σὲ γνωρίζω ἀπὸ τὴν κόψη",
1741+
"strada": "Căpitan Nicolae Licăreț",
1742+
"adresa_judet": "Конференция",
1743+
}
1744+
writer.update_page_form_field_values(writer.pages[0], data, auto_regenerate=False)
1745+
apstream_object = (writer.pages[0]["/Annots"][0]["/AP"]["/N"].get_data())
1746+
found_hex = "".join(re.findall(r"<(.*?)>", apstream_object.decode()))
1747+
expected_hex = data["subsemnatul"].encode("utf-16-be").hex()
1748+
assert expected_hex in found_hex
1749+
apstream_object = (writer.pages[0]["/Annots"][7]["/AP"]["/N"].get_data())
1750+
found_hex = re.findall(r"<(.*?)>", apstream_object.decode())
1751+
expected_hex = data["strada"].encode("utf-16-be").hex()
1752+
assert expected_hex in found_hex
1753+
apstream_object = (writer.pages[0]["/Annots"][9]["/AP"]["/N"].get_data())
1754+
found_hex = re.findall(r"<(.*?)>", apstream_object.decode())
1755+
expected_hex = data["adresa_judet"].encode("utf-16-be").hex()
1756+
assert expected_hex in found_hex
1757+
1758+
17311759
@pytest.mark.enable_socket
17321760
def test_iss1862():
17331761
# The file here has "/B" entry to define the font in a object below the page

0 commit comments

Comments
 (0)