fix: пустые страницы в руководстве — подписи к высокому рисунку переносятся на новую страницу, высокие снимки уменьшаются

This commit is contained in:
darkorion
2026-10-13 14:45:51 +03:00
parent 0f239d5015
commit 4e8ba272f1
2 changed files with 10 additions and 3 deletions
Binary file not shown.
+10 -3
View File
@@ -191,6 +191,9 @@ class Guide(FPDF):
self.set_font("D", "", 9.5)
lines = self.mc(w - 8, 4.9, t, dry_run=True, output="LINES")
h = max(len(lines) * 4.9, 5.6) + 1.8
if y + h > 282: # не влезает — пункт на следующую страницу (иначе автоперенос даёт пустые страницы)
self.add_page()
y = self.get_y()
self._badge(x, y + 0.2, n)
self.set_xy(x + 8, y)
self.set_text_color(*DARK)
@@ -202,16 +205,20 @@ class Guide(FPDF):
def wide(self, name, caption, width=174):
"""Рисунок на всю ширину + легенда под ним."""
buf, (w, h) = self._jpg(name)
ih = width * h / w
labels = LABELS.get(name, [])
max_ih = 150 if labels else 230 # высокий снимок уменьшаем, чтобы с подписями уместился на странице
if width * h / w > max_ih:
width = max_ih * w / h
ih = width * h / w
x0 = 18 + (174 - width) / 2
need = ih + 8 + len(labels) * 7
if self.get_y() + need > 276:
self.add_page()
self.fig += 1
y = self.get_y()
self.set_draw_color(205, 210, 220)
self.image(buf, 18, y, w=width)
self.rect(18, y, width, ih)
self.image(buf, x0, y, w=width)
self.rect(x0, y, width, ih)
y += ih + 2
self.set_xy(18, y)
self.set_font("D", "B", 9)