Mercurial > hgrepos > Python2 > PyMuPDF
diff tests/test_pagelabels.py @ 1:1d09e1dec1d9 upstream
ADD: PyMuPDF v1.26.4: the original sdist.
It does not yet contain MuPDF. This normally will be downloaded when
building PyMuPDF.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:37:51 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_pagelabels.py Mon Sep 15 11:37:51 2025 +0200 @@ -0,0 +1,58 @@ +""" +Define some page labels in a PDF. +Check success in various aspects. +""" + +import pymupdf + + +def make_doc(): + """Makes a PDF with 10 pages.""" + doc = pymupdf.open() + for i in range(10): + page = doc.new_page() + return doc + + +def make_labels(): + """Return page label range rules. + - Rule 1: labels like "A-n", page 0 is first and has "A-1". + - Rule 2: labels as capital Roman numbers, page 4 is first and has "I". + """ + return [ + {"startpage": 0, "prefix": "A-", "style": "D", "firstpagenum": 1}, + {"startpage": 4, "prefix": "", "style": "R", "firstpagenum": 1}, + ] + + +def test_setlabels(): + """Check setting and inquiring page labels. + - Make a PDF with 10 pages + - Label pages + - Inquire labels of pages + - Get list of page numbers for a given label. + """ + doc = make_doc() + doc.set_page_labels(make_labels()) + page_labels = [p.get_label() for p in doc] + answer = ["A-1", "A-2", "A-3", "A-4", "I", "II", "III", "IV", "V", "VI"] + assert page_labels == answer, f"page_labels={page_labels}" + assert doc.get_page_numbers("V") == [8] + assert doc.get_page_labels() == make_labels() + + +def test_labels_styleA(): + """Test correct indexing for styles "a", "A".""" + doc = make_doc() + labels = [ + {"startpage": 0, "prefix": "", "style": "a", "firstpagenum": 1}, + {"startpage": 5, "prefix": "", "style": "A", "firstpagenum": 1}, + ] + doc.set_page_labels(labels) + pdfdata = doc.tobytes() + doc.close() + doc = pymupdf.open("pdf", pdfdata) + answer = ["a", "b", "c", "d", "e", "A", "B", "C", "D", "E"] + page_labels = [page.get_label() for page in doc] + assert page_labels == answer + assert doc.get_page_labels() == labels
