Mercurial > hgrepos > Python2 > PyMuPDF
annotate tests/test_textbox.py @ 46:7ee69f120f19 default tip
>>>>> tag v1.26.5+1 for changeset b74429b0f5c4
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 11 Oct 2025 17:17:30 +0200 |
| parents | a6bc019ac0b2 |
| children |
| rev | line source |
|---|---|
|
1
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 """ |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 Fill a given text in a rectangle on some PDF page using |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
3 1. TextWriter object |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
4 2. Basic text output |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
6 Check text is indeed contained in given rectangle. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
7 """ |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
8 import pymupdf |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
9 |
|
39
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
10 import gentle_compare |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
11 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
12 import os |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
13 import textwrap |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
14 |
|
1
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 # codespell:ignore-begin |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 text = """Der Kleine Schwertwal (Pseudorca crassidens), auch bekannt als Unechter oder Schwarzer Schwertwal, ist eine Art der Delfine (Delphinidae) und der einzige rezente Vertreter der Gattung Pseudorca. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
17 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
18 Er ähnelt dem Orca in Form und Proportionen, ist aber einfarbig schwarz und mit einer Maximallänge von etwa sechs Metern deutlich kleiner. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 Kleine Schwertwale bilden Schulen von durchschnittlich zehn bis fünfzig Tieren, wobei sie sich auch mit anderen Delfinen vergesellschaften und sich meistens abseits der Küsten aufhalten. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 Sie sind in allen Ozeanen gemäßigter, subtropischer und tropischer Breiten beheimatet, sind jedoch vor allem in wärmeren Jahreszeiten auch bis in die gemäßigte bis subpolare Zone südlich der Südspitze Südamerikas, vor Nordeuropa und bis vor Kanada anzutreffen.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
23 # codespell:ignore-end |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
24 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 def test_textbox1(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 """Use TextWriter for text insertion.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
28 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
29 rect = pymupdf.Rect(50, 50, 400, 400) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
30 blue = (0, 0, 1) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
31 tw = pymupdf.TextWriter(page.rect, color=blue) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
32 tw.fill_textbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
33 rect, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
34 text, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
35 align=pymupdf.TEXT_ALIGN_LEFT, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 fontsize=12, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
38 tw.write_text(page, morph=(rect.tl, pymupdf.Matrix(1, 1))) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 # check text containment |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 assert page.get_text() == page.get_text(clip=rect) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
41 page.write_text(writers=tw) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
42 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
43 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 def test_textbox2(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 """Use basic text insertion.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 ocg = doc.add_ocg("ocg1") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 rect = pymupdf.Rect(50, 50, 400, 400) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 blue = pymupdf.utils.getColor("lightblue") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 red = pymupdf.utils.getColorHSV("red") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 page.insert_textbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 rect, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
54 text, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
55 align=pymupdf.TEXT_ALIGN_LEFT, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 fontsize=12, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
57 color=blue, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 oc=ocg, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 # check text containment |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 assert page.get_text() == page.get_text(clip=rect) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 def test_textbox3(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 """Use TextWriter for text insertion.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
66 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
67 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 font = pymupdf.Font("cjk") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
69 rect = pymupdf.Rect(50, 50, 400, 400) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
70 blue = (0, 0, 1) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 tw = pymupdf.TextWriter(page.rect, color=blue) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
72 tw.fill_textbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 rect, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 text, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 align=pymupdf.TEXT_ALIGN_LEFT, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
76 font=font, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
77 fontsize=12, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
78 right_to_left=True, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
79 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
80 tw.write_text(page, morph=(rect.tl, pymupdf.Matrix(1, 1))) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
81 # check text containment |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
82 assert page.get_text() == page.get_text(clip=rect) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
83 doc.scrub() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
84 doc.subset_fonts() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
85 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
86 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
87 def test_textbox4(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
88 """Use TextWriter for text insertion.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 ocg = doc.add_ocg("ocg1") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 rect = pymupdf.Rect(50, 50, 400, 600) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
93 blue = (0, 0, 1) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 tw = pymupdf.TextWriter(page.rect, color=blue) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 tw.fill_textbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 rect, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
97 text, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 align=pymupdf.TEXT_ALIGN_LEFT, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 fontsize=12, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 font=pymupdf.Font("cour"), |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
101 right_to_left=True, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 tw.write_text(page, oc=ocg, morph=(rect.tl, pymupdf.Matrix(1, 1))) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 # check text containment |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 assert page.get_text() == page.get_text(clip=rect) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 def test_textbox5(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 """Using basic text insertion.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
110 small_glyph_heights0 = pymupdf.TOOLS.set_small_glyph_heights() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
111 pymupdf.TOOLS.set_small_glyph_heights(True) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
112 try: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
113 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
114 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
115 r = pymupdf.Rect(100, 100, 150, 150) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
116 text = "words and words and words and more words..." |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
117 rc = -1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
118 fontsize = 12 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
119 page.draw_rect(r) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
120 while rc < 0: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
121 rc = page.insert_textbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
122 r, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
123 text, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
124 fontsize=fontsize, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
125 align=pymupdf.TEXT_ALIGN_JUSTIFY, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
126 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
127 fontsize -= 0.5 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
128 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
129 blocks = page.get_text("blocks") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
130 bbox = pymupdf.Rect(blocks[0][:4]) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
131 assert bbox in r |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
132 finally: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
133 # Must restore small_glyph_heights, otherwise other tests can fail. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
134 pymupdf.TOOLS.set_small_glyph_heights(small_glyph_heights0) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
135 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
136 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
137 def test_2637(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
138 """Ensure correct calculation of fitting text.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
139 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
140 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
141 text = ( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
142 "The morning sun painted the sky with hues of orange and pink. " |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
143 "Birds chirped harmoniously, greeting the new day. " |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
144 "Nature awakened, filling the air with life and promise." |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
145 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
146 rect = pymupdf.Rect(50, 50, 500, 280) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
147 fontsize = 50 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
148 rc = -1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
149 while rc < 0: # look for largest font size that makes the text fit |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
150 rc = page.insert_textbox(rect, text, fontname="hebo", fontsize=fontsize) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
151 fontsize -= 1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
152 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
153 # confirm text won't lap outside rect |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
154 blocks = page.get_text("blocks") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
155 bbox = pymupdf.Rect(blocks[0][:4]) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
156 assert bbox in rect |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
157 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
158 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
159 def test_htmlbox1(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
160 """Write HTML-styled text into a rect with different rotations. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
161 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
162 The text is styled and contains a link. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
163 Then extract the text again, and |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
164 - assert that text was written in the 4 different angles, |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
165 - assert that text properties are correct (bold, italic, color), |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
166 - assert that the link has been correctly inserted. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
167 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
168 We try to insert into a rectangle that is too small, setting |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
169 scale=False and confirming we have a negative return code. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
170 """ |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
171 if not hasattr(pymupdf, "mupdf"): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
172 print("'test_htmlbox1' not executed in classic.") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
173 return |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
174 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
175 rect = pymupdf.Rect(100, 100, 200, 200) # this only works with scale=True |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
176 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
177 base_text = """Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
178 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
179 text = """Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation <b>ullamco</b> <i>laboris</i> nisi ut aliquid ex ea commodi consequat. Quis aute iure reprehenderit in <span style="color: #0f0;font-weight:bold;">voluptate</span> velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui <a href="https://www.artifex.com">officia</a> deserunt mollit anim id est laborum.""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
180 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
181 doc = pymupdf.Document() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
182 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
183 for rot in (0, 90, 180, 270): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
184 wdirs = ((1, 0), (0, -1), (-1, 0), (0, 1)) # all writing directions |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
185 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
186 spare_height, scale = page.insert_htmlbox(rect, text, rotate=rot, scale_low=1) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
187 assert spare_height < 0 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
188 assert scale == 1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
189 spare_height, scale = page.insert_htmlbox(rect, text, rotate=rot, scale_low=0) |
|
39
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
190 page.draw_rect(rect, (1, 0, 0)) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
191 doc.save(os.path.normpath(f'{__file__}/../../tests/test_htmlbox1.pdf')) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
192 assert abs(spare_height - 3.8507) < 0.001 |
|
1
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
193 assert 0 < scale < 1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
194 page = doc.reload_page(page) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
195 link = page.get_links()[0] # extracts the links on the page |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
196 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
197 assert link["uri"] == "https://www.artifex.com" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
198 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
199 # Assert plain text is complete. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
200 # We must remove line breaks and any ligatures for this. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
201 assert base_text == page.get_text(flags=0)[:-1].replace("\n", " ") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
202 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
203 encounters = 0 # counts the words with selected properties |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
204 for b in page.get_text("dict")["blocks"]: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
205 for l in b["lines"]: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
206 wdir = l["dir"] # writing direction |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
207 assert wdir == wdirs[page.number] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
208 for s in l["spans"]: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
209 stext = s["text"] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
210 color = pymupdf.sRGB_to_pdf(s["color"]) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
211 bold = bool(s["flags"] & 16) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
212 italic = bool(s["flags"] & 2) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
213 if stext in ("ullamco", "laboris", "voluptate"): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
214 encounters += 1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
215 if stext == "ullamco": |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
216 assert bold is True |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
217 assert italic is False |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
218 assert color == pymupdf.pdfcolor["black"] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
219 elif stext == "laboris": |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
220 assert bold is False |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
221 assert italic is True |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
222 assert color == pymupdf.pdfcolor["black"] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
223 elif stext == "voluptate": |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
224 assert bold is True |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
225 assert italic is False |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
226 assert color == pymupdf.pdfcolor["green"] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
227 else: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
228 assert bold is False |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
229 assert italic is False |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
230 # all 3 special special words were encountered |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
231 assert encounters == 3 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
232 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
233 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
234 def test_htmlbox2(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
235 """Test insertion without scaling""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
236 if not hasattr(pymupdf, "mupdf"): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
237 print("'test_htmlbox2' not executed in classic.") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
238 return |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
239 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
240 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
241 rect = pymupdf.Rect(100, 100, 200, 200) # large enough to hold text |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
242 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
243 bottoms = set() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
244 for rot in (0, 90, 180, 270): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
245 spare_height, scale = page.insert_htmlbox( |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
246 rect, "Hello, World!", scale_low=1, rotate=rot |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
247 ) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
248 assert scale == 1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
249 assert 0 < spare_height < rect.height |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
250 bottoms.add(spare_height) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
251 assert len(bottoms) == 1 # same result for all rotations |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
252 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
253 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
254 def test_htmlbox3(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
255 """Test insertion with opacity""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
256 if not hasattr(pymupdf, "mupdf"): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
257 print("'test_htmlbox3' not executed in classic.") |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
258 return |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
259 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
260 rect = pymupdf.Rect(100, 250, 300, 350) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
261 text = """<span style="color:red;font-size:20px;">Just some text.</span>""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
262 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
263 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
264 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
265 # insert some text with opacity |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
266 page.insert_htmlbox(rect, text, opacity=0.5) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
267 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
268 # lowlevel-extract inserted text to access opacity |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
269 span = page.get_texttrace()[0] |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
270 assert span["opacity"] == 0.5 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
271 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
272 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
273 def test_3559(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
274 doc = pymupdf.Document() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
275 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
276 text_insert="""<body><h3></h3></body>""" |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
277 rect = pymupdf.Rect(100, 100, 200, 200) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
278 page.insert_htmlbox(rect, text_insert) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
279 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
280 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
281 def test_3916(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
282 doc = pymupdf.open() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
283 rect = pymupdf.Rect(100, 100, 101, 101) # Too small for the text. |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
284 page = doc.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
285 spare_height, scale = page.insert_htmlbox(rect, "Hello, World!", scale_low=0.5) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
286 assert spare_height == -1 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
287 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
288 |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
289 def test_4400(): |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
290 with pymupdf.open() as document: |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
291 page = document.new_page() |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
292 writer = pymupdf.TextWriter(page.rect) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
293 text = '111111111' |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
294 print(f'Calling writer.fill_textbox().', flush=1) |
|
1d09e1dec1d9
ADD: PyMuPDF v1.26.4: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
295 writer.fill_textbox(rect=pymupdf.Rect(0, 0, 100, 20), pos=(80, 0), text=text, fontsize=8) |
|
39
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
296 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
297 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
298 def test_4613(): |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
299 print() |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
300 text = 3 * 'abcdefghijklmnopqrstuvwxyz\nABCDEFGHIJKLMNOPQRSTUVWXYZ\n' |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
301 story = pymupdf.Story(text) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
302 rect = pymupdf.Rect(10, 10, 100, 100) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
303 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
304 # Test default operation where we get additional scaling down because of |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
305 # the long words in our text. |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
306 print(f'test_4613(): ### Testing default operation.') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
307 with pymupdf.open() as doc: |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
308 page = doc.new_page() |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
309 spare_height, scale = page.insert_htmlbox(rect, story) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
310 print(f'test_4613(): {spare_height=} {scale=}') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
311 # The additional down-scaling from the long word widths results in |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
312 # spare vertical space. |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
313 page.draw_rect(rect, (1, 0, 0)) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
314 path = os.path.normpath(f'{__file__}/../../tests/test_4613.pdf') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
315 doc.save(path) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
316 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
317 path_pixmap = os.path.normpath(f'{__file__}/../../tests/test_4613.png') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
318 path_pixmap_expected = os.path.normpath(f'{__file__}/../../tests/resources/test_4613.png') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
319 pixmap = page.get_pixmap(dpi=300) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
320 pixmap.save(path_pixmap) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
321 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
322 pixmap_diff = gentle_compare.pixmaps_diff(path_pixmap_expected, pixmap) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
323 pixmap_diff.save(os.path.normpath(f'{__file__}/../../tests/test_4613-diff.png')) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
324 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
325 rms = gentle_compare.pixmaps_rms(pixmap, path_pixmap_expected) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
326 print(f'{rms=}') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
327 assert rms == 0, f'{rms=}' |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
328 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
329 assert abs(spare_height - 45.7536) < 0.1 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
330 assert abs(scale - 0.4009) < 0.01 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
331 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
332 new_text = page.get_text('text', clip=rect) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
333 print(f'test_4613(): new_text:') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
334 print(textwrap.indent(new_text, ' ')) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
335 assert new_text == text |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
336 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
337 # Check with _scale_word_width=False - ignore too-wide words. |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
338 print(f'test_4613(): ### Testing with _scale_word_width=False.') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
339 with pymupdf.open() as doc: |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
340 page = doc.new_page() |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
341 spare_height, scale = page.insert_htmlbox(rect, story, _scale_word_width=False) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
342 print(f'test_4613(): _scale_word_width=False: {spare_height=} {scale=}') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
343 # With _scale_word_width=False we allow long words to extend beyond the |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
344 # rect, so we should have spare_height == 0 and only a small amount of |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
345 # down-scaling. |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
346 assert spare_height == 0 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
347 assert abs(scale - 0.914) < 0.01 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
348 new_text = page.get_text('text', clip=rect) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
349 print(f'test_4613(): new_text:') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
350 print(textwrap.indent(new_text, ' ')) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
351 assert new_text == textwrap.dedent(''' |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
352 abcdefghijklmno |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
353 ABCDEFGHIJKLM |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
354 abcdefghijklmno |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
355 ABCDEFGHIJKLM |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
356 abcdefghijklmno |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
357 ABCDEFGHIJKLM |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
358 ''')[1:] |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
359 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
360 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
361 # Check that we get no fit if scale_low is not low enough. |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
362 print(f'test_4613(): ### Testing with scale_low too high to allow a fit.') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
363 with pymupdf.open() as doc: |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
364 page = doc.new_page() |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
365 scale_low=0.6 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
366 spare_height, scale = page.insert_htmlbox(rect, story, scale_low=scale_low) |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
367 print(f'test_4613(): {scale_low=}: {spare_height=} {scale=}') |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
368 assert spare_height == -1 |
|
a6bc019ac0b2
ADD: PyMuPDF v1.26.5: the original sdist.
Franz Glasner <fzglas.hg@dom66.de>
parents:
1
diff
changeset
|
369 assert scale == scale_low |
