Mercurial > hgrepos > Python2 > PyMuPDF
comparison 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 |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 1:1d09e1dec1d9 |
|---|---|
| 1 """ | |
| 2 Define some page labels in a PDF. | |
| 3 Check success in various aspects. | |
| 4 """ | |
| 5 | |
| 6 import pymupdf | |
| 7 | |
| 8 | |
| 9 def make_doc(): | |
| 10 """Makes a PDF with 10 pages.""" | |
| 11 doc = pymupdf.open() | |
| 12 for i in range(10): | |
| 13 page = doc.new_page() | |
| 14 return doc | |
| 15 | |
| 16 | |
| 17 def make_labels(): | |
| 18 """Return page label range rules. | |
| 19 - Rule 1: labels like "A-n", page 0 is first and has "A-1". | |
| 20 - Rule 2: labels as capital Roman numbers, page 4 is first and has "I". | |
| 21 """ | |
| 22 return [ | |
| 23 {"startpage": 0, "prefix": "A-", "style": "D", "firstpagenum": 1}, | |
| 24 {"startpage": 4, "prefix": "", "style": "R", "firstpagenum": 1}, | |
| 25 ] | |
| 26 | |
| 27 | |
| 28 def test_setlabels(): | |
| 29 """Check setting and inquiring page labels. | |
| 30 - Make a PDF with 10 pages | |
| 31 - Label pages | |
| 32 - Inquire labels of pages | |
| 33 - Get list of page numbers for a given label. | |
| 34 """ | |
| 35 doc = make_doc() | |
| 36 doc.set_page_labels(make_labels()) | |
| 37 page_labels = [p.get_label() for p in doc] | |
| 38 answer = ["A-1", "A-2", "A-3", "A-4", "I", "II", "III", "IV", "V", "VI"] | |
| 39 assert page_labels == answer, f"page_labels={page_labels}" | |
| 40 assert doc.get_page_numbers("V") == [8] | |
| 41 assert doc.get_page_labels() == make_labels() | |
| 42 | |
| 43 | |
| 44 def test_labels_styleA(): | |
| 45 """Test correct indexing for styles "a", "A".""" | |
| 46 doc = make_doc() | |
| 47 labels = [ | |
| 48 {"startpage": 0, "prefix": "", "style": "a", "firstpagenum": 1}, | |
| 49 {"startpage": 5, "prefix": "", "style": "A", "firstpagenum": 1}, | |
| 50 ] | |
| 51 doc.set_page_labels(labels) | |
| 52 pdfdata = doc.tobytes() | |
| 53 doc.close() | |
| 54 doc = pymupdf.open("pdf", pdfdata) | |
| 55 answer = ["a", "b", "c", "d", "e", "A", "B", "C", "D", "E"] | |
| 56 page_labels = [page.get_label() for page in doc] | |
| 57 assert page_labels == answer | |
| 58 assert doc.get_page_labels() == labels |
