fix: пустые страницы в руководстве — подписи к высокому рисунку переносятся на новую страницу, высокие снимки уменьшаются
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user