Skip to content

Commit 7674c92

Browse files
src/__init__.py: avoid duplication in Page.delete_page() and Page.delete_pages().
Page.delete_page() now simply calls Page.delete_pages(). Page.delete_pages(): if we are given a single negative page number, add page_count unti not negative. This makes us match documented behaviour of delete_page().
1 parent cc81a38 commit 7674c92

File tree

1 file changed

+8
-27
lines changed

1 file changed

+8
-27
lines changed

src/__init__.py

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3865,28 +3865,7 @@ def del_xml_metadata(self):
38653865
def delete_page(self, pno: int =-1):
38663866
""" Delete one page from a PDF.
38673867
"""
3868-
if not self.is_pdf:
3869-
raise ValueError("is no PDF")
3870-
if self.is_closed:
3871-
raise ValueError("document closed")
3872-
3873-
page_count = self.page_count
3874-
while pno < 0:
3875-
pno += page_count
3876-
3877-
if pno >= page_count:
3878-
raise ValueError("bad page number(s)")
3879-
3880-
# remove TOC bookmarks pointing to deleted page
3881-
toc = self.get_toc()
3882-
ol_xrefs = self.get_outline_xrefs()
3883-
for i, item in enumerate(toc):
3884-
if item[2] == pno + 1:
3885-
self._remove_toc_item(ol_xrefs[i])
3886-
3887-
self._remove_links_to(frozenset((pno,)))
3888-
self._delete_page(pno)
3889-
self._reset_page_refs()
3868+
return self.delete_pages(pno)
38903869

38913870
def delete_pages(self, *args, **kw):
38923871
"""Delete pages from a PDF.
@@ -3896,6 +3875,7 @@ def delete_pages(self, *args, **kw):
38963875
specify the first/last page to delete.
38973876
Or a list/tuple/range object, which can contain arbitrary
38983877
page numbers.
3878+
Or a single integer page number.
38993879
"""
39003880
if not self.is_pdf:
39013881
raise ValueError("is no PDF")
@@ -3928,12 +3908,13 @@ def delete_pages(self, *args, **kw):
39283908
if not f <= t < page_count:
39293909
raise ValueError("bad page number(s)")
39303910
numbers = tuple(range(f, t + 1))
3911+
elif isinstance(args[0], int):
3912+
pno = args[0]
3913+
while pno < 0:
3914+
pno += page_count
3915+
numbers = (pno,)
39313916
else:
3932-
r = args[0]
3933-
if type(r) is int:
3934-
return self.delete_page(r)
3935-
else:
3936-
numbers = tuple(r)
3917+
numbers = tuple(args[0])
39373918

39383919
numbers = list(map(int, set(numbers))) # ensure unique integers
39393920
if numbers == []:

0 commit comments

Comments
 (0)