comparison tests/test_remove-rotation.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 import os
2 import pymupdf
3 from gentle_compare import gentle_compare
4
5 scriptdir = os.path.dirname(__file__)
6
7
8 def test_remove_rotation():
9 """Remove rotation verifying identical appearance and text."""
10 filename = os.path.join(scriptdir, "resources", "test-2812.pdf")
11 doc = pymupdf.open(filename)
12
13 # We always create fresh pages to avoid false positives from cache content.
14 # Text on these pages consists of pairwise different strings, sorting by
15 # these strings must therefore yield identical bounding boxes.
16 for i in range(1, doc.page_count):
17 assert doc[i].rotation # must be a rotated page
18 pix0 = doc[i].get_pixmap() # make image
19 words0 = []
20 for w in doc[i].get_text("words"):
21 words0.append(list(pymupdf.Rect(w[:4]) * doc[i].rotation_matrix) + [w[4]])
22 words0.sort(key=lambda w: w[4]) # sort by word strings
23 # derotate page and confirm nothing else has changed
24 doc[i].remove_rotation()
25 assert doc[i].rotation == 0
26 pix1 = doc[i].get_pixmap()
27 words1 = doc[i].get_text("words")
28 words1.sort(key=lambda w: w[4]) # sort by word strings
29 assert pix1.digest == pix0.digest, f"{pix1.digest}/{pix0.digest}"
30 assert gentle_compare(words0, words1)