MCPcopy Index your code
hub / github.com/pymupdf/PyMuPDF / delete_pages

Method delete_pages

src/__init__.py:4355–4422  ·  view source on GitHub ↗

Delete pages from a PDF. Args: Either keywords 'from_page'/'to_page', or two integers to specify the first/last page to delete. Or a list/tuple/range object, which can contain arbitrary page numbers. Or a single integer page number

(self, *args, **kw)

Source from the content-addressed store, hash-verified

4353 return self.delete_pages(pno)
4354
4355 def delete_pages(self, *args, **kw):
4356 """Delete pages from a PDF.
4357
4358 Args:
4359 Either keywords 'from_page'/'to_page', or two integers to
4360 specify the first/last page to delete.
4361 Or a list/tuple/range object, which can contain arbitrary
4362 page numbers.
4363 Or a single integer page number.
4364 """
4365 if not self.is_pdf:
4366 raise ValueError("is no PDF")
4367 if self.is_closed:
4368 raise ValueError("document closed")
4369
4370 page_count = self.page_count # page count of document
4371 f = t = -1
4372 if kw: # check if keywords were used
4373 if args: # then no positional args are allowed
4374 raise ValueError("cannot mix keyword and positional argument")
4375 f = kw.get("from_page", -1) # first page to delete
4376 t = kw.get("to_page", -1) # last page to delete
4377 while f < 0:
4378 f += page_count
4379 while t < 0:
4380 t += page_count
4381 if not f <= t < page_count:
4382 raise ValueError("bad page number(s)")
4383 numbers = tuple(range(f, t + 1))
4384 else:
4385 if len(args) > 2 or args == []:
4386 raise ValueError("need 1 or 2 positional arguments")
4387 if len(args) == 2:
4388 f, t = args
4389 if not (type(f) is int and type(t) is int):
4390 raise ValueError("both arguments must be int")
4391 if f > t:
4392 f, t = t, f
4393 if not f <= t < page_count:
4394 raise ValueError("bad page number(s)")
4395 numbers = tuple(range(f, t + 1))
4396 elif isinstance(args[0], int):
4397 pno = args[0]
4398 while pno < 0:
4399 pno += page_count
4400 numbers = (pno,)
4401 else:
4402 numbers = tuple(args[0])
4403
4404 numbers = list(map(int, set(numbers))) # ensure unique integers
4405 if numbers == []:
4406 message("nothing to delete")
4407 return
4408 numbers.sort()
4409 if numbers[0] < 0 or numbers[-1] >= page_count:
4410 raise ValueError("bad page number(s)")
4411 frozen_numbers = frozenset(numbers)
4412 toc = self.get_toc()

Callers 5

__delitem__Method · 0.95
delete_pageMethod · 0.95
test_3094Function · 0.80
test_4462Function · 0.80
test_4790Function · 0.80

Calls 8

get_tocMethod · 0.95
get_outline_xrefsMethod · 0.95
_remove_toc_itemMethod · 0.95
_remove_links_toMethod · 0.95
_delete_pageMethod · 0.95
_reset_page_refsMethod · 0.95
messageFunction · 0.70
getMethod · 0.45

Tested by 3

test_3094Function · 0.64
test_4462Function · 0.64
test_4790Function · 0.64