diff --git a/pypdf/_reader.py b/pypdf/_reader.py index 7215bc78f..75738fd17 100644 --- a/pypdf/_reader.py +++ b/pypdf/_reader.py @@ -296,7 +296,7 @@ class PdfReader: @property def viewer_preferences(self) -> Optional[ViewerPreferences]: - """Returns the existing ViewerPreferences as a overloaded dictionniary.""" + """Returns the existing ViewerPreferences as an overloaded dictionary.""" o = cast(DictionaryObject, self.trailer["/Root"]).get( CD.VIEWER_PREFERENCES, None ) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index dc132349e..ae56fe76b 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -371,10 +371,10 @@ def set_need_appearances_writer(self, state: bool = True) -> None: @property def viewer_preferences(self) -> Optional[ViewerPreferences]: - """Returns the existing ViewerPreferences as a overloaded dictionniary.""" + """Returns the ViewerPreferences as an overloaded dictionary.""" o = cast(DictionaryObject, self._root_object).get(CD.VIEWER_PREFERENCES, None) if o is None: - return None + o = self._create_viewer_preferences() o = o.get_object() if not isinstance(o, ViewerPreferences): o = ViewerPreferences(o) @@ -384,7 +384,7 @@ def viewer_preferences(self) -> Optional[ViewerPreferences]: self._root_object[NameObject(CD.VIEWER_PREFERENCES)] = o return o - def create_viewer_preference(self) -> ViewerPreferences: + def _create_viewer_preferences(self) -> ViewerPreferences: o = ViewerPreferences() self._root_object[NameObject(CD.VIEWER_PREFERENCES)] = self._add_object(o) return o diff --git a/tests/test_writer.py b/tests/test_writer.py index 0d06f3f17..f39399d51 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -1724,7 +1724,6 @@ def test_damaged_pdf_length_returning_none(): def test_viewerpreferences(): """ Add Tests for ViewerPreferences - https://github.com/py-pdf/pypdf/issues/140#issuecomment-1685380549 """ url = "https://github.com/py-pdf/pypdf/files/9175966/2015._pb_decode_pg0.pdf" name = "2015._pb_decode_pg0.pdf" @@ -1776,10 +1775,13 @@ def test_viewerpreferences(): v.print_pagerange = ArrayObject() assert len(v.print_pagerange) == 0 - writer.create_viewer_preference() - assert len(writer._root_object["/ViewerPreferences"]) == 0 - del reader.trailer["/Root"]["/ViewerPreferences"] - assert reader.viewer_preferences is None writer = PdfWriter(clone_from=reader) - assert writer.viewer_preferences is None +<<<<<<< HEAD + assert "/ViewerPreferences" not in writer._root_object +======= + assert not ("/ViewerPreferences" in writer._root_object) +>>>>>>> aef2c89 (fix unit tests) + + writer.viewer_preferences.direction = "/R2L" + assert len(writer._root_object["/ViewerPreferences"]) == 1