Mercurial > hgrepos > Python2 > PyMuPDF
comparison tests/test_object_manipulation.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 Check some low-level PDF object manipulations: | |
| 3 1. Set page rotation and compare with string in object definition. | |
| 4 2. Set page rotation via string manipulation and compare with result of | |
| 5 proper page property. | |
| 6 3. Read the PDF trailer and verify it has the keys "/Root", "/ID", etc. | |
| 7 """ | |
| 8 import pymupdf | |
| 9 import os | |
| 10 | |
| 11 scriptdir = os.path.abspath(os.path.dirname(__file__)) | |
| 12 resources = os.path.join(scriptdir, "resources") | |
| 13 filename = os.path.join(resources, "001003ED.pdf") | |
| 14 | |
| 15 | |
| 16 def test_rotation1(): | |
| 17 doc = pymupdf.open() | |
| 18 page = doc.new_page() | |
| 19 page.set_rotation(270) | |
| 20 assert doc.xref_get_key(page.xref, "Rotate") == ("int", "270") | |
| 21 | |
| 22 | |
| 23 def test_rotation2(): | |
| 24 doc = pymupdf.open() | |
| 25 page = doc.new_page() | |
| 26 doc.xref_set_key(page.xref, "Rotate", "270") | |
| 27 assert page.rotation == 270 | |
| 28 | |
| 29 | |
| 30 def test_trailer(): | |
| 31 """Access PDF trailer information.""" | |
| 32 doc = pymupdf.open(filename) | |
| 33 xreflen = doc.xref_length() | |
| 34 _, xreflen_str = doc.xref_get_key(-1, "Size") | |
| 35 assert xreflen == int(xreflen_str) | |
| 36 trailer_keys = doc.xref_get_keys(-1) | |
| 37 assert "ID" in trailer_keys | |
| 38 assert "Root" in trailer_keys | |
| 39 | |
| 40 | |
| 41 def test_valid_name(): | |
| 42 """Verify correct PDF names in method xref_set_key.""" | |
| 43 doc = pymupdf.open() | |
| 44 page = doc.new_page() | |
| 45 | |
| 46 # testing name in "key": confirm correct spec is accepted | |
| 47 doc.xref_set_key(page.xref, "Rotate", "90") | |
| 48 assert page.rotation == 90 | |
| 49 | |
| 50 # check wrong spec is detected | |
| 51 error_generated = False | |
| 52 try: | |
| 53 # illegal char in name (white space) | |
| 54 doc.xref_set_key(page.xref, "my rotate", "90") | |
| 55 except ValueError as e: | |
| 56 assert str(e) == "bad 'key'" | |
| 57 error_generated = True | |
| 58 assert error_generated | |
| 59 | |
| 60 # test name in "value": confirm correct spec is accepted | |
| 61 doc.xref_set_key(page.xref, "my_rotate/something", "90") | |
| 62 assert doc.xref_get_key(page.xref, "my_rotate/something") == ("int", "90") | |
| 63 doc.xref_set_key(page.xref, "my_rotate", "/90") | |
| 64 assert doc.xref_get_key(page.xref, "my_rotate") == ("name", "/90") | |
| 65 | |
| 66 # check wrong spec is detected | |
| 67 error_generated = False | |
| 68 try: | |
| 69 # no slash inside name allowed | |
| 70 doc.xref_set_key(page.xref, "my_rotate", "/9/0") | |
| 71 except ValueError as e: | |
| 72 assert str(e) == "bad 'value'" | |
| 73 error_generated = True | |
| 74 assert error_generated |
