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