From 2934a3de68769b3e111a6dc4a054b0dfddd6800e Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 08:54:23 +0100 Subject: [PATCH 1/6] STY: Tweak PdfWriter Small changes including making method insert_blank_page more flexible. --- pypdf/_writer.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index cf50ca0bf..9cc88adbd 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -203,7 +203,7 @@ def __init__( self._info_obj: Optional[PdfObject] """The PDF files's document information dictionary, - the Info entry in the PDF file's trailer dictionary.""" + defined by Info in the PDF file's trailer dictionary.""" self._ID: Union[ArrayObject, None] = None """The PDF file identifier, @@ -351,8 +351,7 @@ def xmp_metadata(self) -> Optional[XmpInformation]: @xmp_metadata.setter def xmp_metadata(self, value: Optional[XmpInformation]) -> None: """XMP (Extensible Metadata Platform) data.""" - if value is None: - if "/Metadata" in self.root_object: + if value is None and "/Metadata" in self.root_object: del self.root_object["/Metadata"] else: self.root_object[NameObject("/Metadata")] = value @@ -590,7 +589,7 @@ def insert_page( """ assert self.flattened_pages is not None, "mypy" if index < 0: - index = len(self.flattened_pages) + index + index += len(self.flattened_pages) if index < 0: raise ValueError("Invalid index value") if index >= len(self.flattened_pages): @@ -655,7 +654,7 @@ def insert_blank_page( """ Insert a blank page to this PDF file and return it. - If no page size is specified, use the size of the last page. + If no page size is specified for a dimension, use the size of the last page. Args: width: The width of the new page expressed in default user @@ -672,10 +671,12 @@ def insert_blank_page( and previous page does not exist. """ - if width is None or (height is None and index < self.get_num_pages()): + if (width is None or height is None) and index < self.get_num_pages()): oldpage = self.pages[index] - width = oldpage.mediabox.width - height = oldpage.mediabox.height + if width is None: + width = oldpage.mediabox.width + if height is None: + height = oldpage.mediabox.height page = PageObject.create_blank_page(self, width, height) self.insert_page(page, index) return page From f4c09eb9f98cee190e0bcc29a2a7d5756add496c Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 08:57:36 +0100 Subject: [PATCH 2/6] STY: Tweak PdfWriter Small changes including making method insert_blank_page more flexible. --- pypdf/_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 9cc88adbd..87f04a380 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -671,7 +671,7 @@ def insert_blank_page( and previous page does not exist. """ - if (width is None or height is None) and index < self.get_num_pages()): + if (width is None or height is None) and index < self.get_num_pages(): oldpage = self.pages[index] if width is None: width = oldpage.mediabox.width From ac362a13a966ab246a2a6f984cf91a99e45a385b Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 10:28:40 +0100 Subject: [PATCH 3/6] Update pypdf/_writer.py Co-authored-by: Stefan <96178532+stefan6419846@users.noreply.github.com> --- pypdf/_writer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index 87f04a380..a4685c1e5 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -352,7 +352,7 @@ def xmp_metadata(self) -> Optional[XmpInformation]: def xmp_metadata(self, value: Optional[XmpInformation]) -> None: """XMP (Extensible Metadata Platform) data.""" if value is None and "/Metadata" in self.root_object: - del self.root_object["/Metadata"] + del self.root_object["/Metadata"] else: self.root_object[NameObject("/Metadata")] = value From 3b9aaa53f783cbd5df8eb712d039e7c37779551a Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 12:37:22 +0100 Subject: [PATCH 4/6] STY: Tweak PdfWriter Small changes including making method insert_blank_page more flexible. --- pypdf/_writer.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pypdf/_writer.py b/pypdf/_writer.py index a4685c1e5..904cdd829 100644 --- a/pypdf/_writer.py +++ b/pypdf/_writer.py @@ -351,8 +351,9 @@ def xmp_metadata(self) -> Optional[XmpInformation]: @xmp_metadata.setter def xmp_metadata(self, value: Optional[XmpInformation]) -> None: """XMP (Extensible Metadata Platform) data.""" - if value is None and "/Metadata" in self.root_object: - del self.root_object["/Metadata"] + if value is None: + if "/Metadata" in self.root_object: + del self.root_object["/Metadata"] else: self.root_object[NameObject("/Metadata")] = value From ea5e75de25ee000ef4eaf5c79af5c5a8c1f95bb6 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 12:53:11 +0100 Subject: [PATCH 5/6] STY: Tweak PdfWriter Small changes including making method insert_blank_page more flexible. --- tests/test_writer.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_writer.py b/tests/test_writer.py index 97acb2a90..6c885d19a 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -236,6 +236,10 @@ def writer_operate(writer: PdfWriter) -> None: writer.page_mode = NameObject("/UseOC") assert writer._get_page_mode() == "/UseOC" writer.insert_blank_page(width=100, height=100) + page = writer.insert_blank_page(width=100) + assert page.mediabox.height = 100 + page = writer.insert_blank_page(height=100) + assert page.mediabox.width = 100 writer.insert_blank_page() # without parameters writer.remove_images() From acd2598d6bb99283ed99fdb65980a21ff172b1e7 Mon Sep 17 00:00:00 2001 From: j-t-1 <120829237+j-t-1@users.noreply.github.com> Date: Sat, 28 Jun 2025 12:54:40 +0100 Subject: [PATCH 6/6] STY: Tweak PdfWriter Small changes including making method insert_blank_page more flexible. --- tests/test_writer.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_writer.py b/tests/test_writer.py index 6c885d19a..b186d4cee 100644 --- a/tests/test_writer.py +++ b/tests/test_writer.py @@ -237,9 +237,9 @@ def writer_operate(writer: PdfWriter) -> None: assert writer._get_page_mode() == "/UseOC" writer.insert_blank_page(width=100, height=100) page = writer.insert_blank_page(width=100) - assert page.mediabox.height = 100 + assert page.mediabox.height == 100 page = writer.insert_blank_page(height=100) - assert page.mediabox.width = 100 + assert page.mediabox.width == 100 writer.insert_blank_page() # without parameters writer.remove_images()