(self, pdf, title, rows)
| 19004 | self._mc(pdf, 6, f"- {w}") |
| 19005 | |
| 19006 | def _pdf_table(self, pdf, title, rows): |
| 19007 | pdf.ln(2) |
| 19008 | pdf.set_font("Helvetica", "B", 11) |
| 19009 | pdf.cell(0, 7, self._latin1(title), new_x=XPos.LMARGIN, new_y=YPos.NEXT) |
| 19010 | pdf.set_font("Helvetica", "B", 9) |
| 19011 | key_w = 52 |
| 19012 | val_w = max(30, pdf.w - pdf.l_margin - pdf.r_margin - key_w) |
| 19013 | pdf.cell(key_w, 7, self._latin1("Campo"), border=1) |
| 19014 | pdf.cell(val_w, 7, self._latin1("Valore"), border=1, new_x=XPos.LMARGIN, new_y=YPos.NEXT) |
| 19015 | pdf.set_font("Helvetica", "", 9) |
| 19016 | for k, v in rows: |
| 19017 | k_txt = self._latin1(str(k)) |
| 19018 | v_txt = self._latin1(str(v)) |
| 19019 | x0 = pdf.l_margin |
| 19020 | y0 = pdf.get_y() |
| 19021 | # Stima linee per mantenere entrambe le celle allineate e senza overflow orizzontale. |
| 19022 | k_lines = max(1, len(pdf.multi_cell(key_w, 6, k_txt, dry_run=True, output="LINES"))) |
| 19023 | v_lines = max(1, len(pdf.multi_cell(val_w, 6, v_txt, dry_run=True, output="LINES"))) |
| 19024 | row_h = 6 * max(k_lines, v_lines) |
| 19025 | if y0 + row_h > (pdf.h - pdf.b_margin): |
| 19026 | pdf.add_page() |
| 19027 | pdf.set_font("Helvetica", "B", 9) |
| 19028 | pdf.cell(key_w, 7, self._latin1("Campo"), border=1) |
| 19029 | pdf.cell(val_w, 7, self._latin1("Valore"), border=1, new_x=XPos.LMARGIN, new_y=YPos.NEXT) |
| 19030 | pdf.set_font("Helvetica", "", 9) |
| 19031 | y0 = pdf.get_y() |
| 19032 | pdf.rect(x0, y0, key_w, row_h) |
| 19033 | pdf.rect(x0 + key_w, y0, val_w, row_h) |
| 19034 | pdf.set_xy(x0, y0) |
| 19035 | pdf.multi_cell(key_w, 6, k_txt) |
| 19036 | pdf.set_xy(x0 + key_w, y0) |
| 19037 | pdf.multi_cell(val_w, 6, v_txt) |
| 19038 | pdf.set_xy(x0, y0 + row_h) |
| 19039 | |
| 19040 | def _pdf_footer_credentials(self, pdf, creds: dict): |
| 19041 | pdf.ln(5) |
no test coverage detected