From 6e183b8d159fc2139806b3dcf9cf5a7f0e3b6c64 Mon Sep 17 00:00:00 2001 From: Lucas Cimon <925560+Lucas-C@users.noreply.github.com> Date: Wed, 12 Apr 2023 19:13:23 +0200 Subject: [PATCH] write_html: do not style header row if no is present - fix #740 --- CHANGELOG.md | 4 ++-- fpdf/html.py | 13 ++++++++++++- fpdf/table.py | 6 +++++- test/html/html_table_with_img.pdf | Bin 0 -> 14743 bytes ...ble_with_img_without_explicit_dimensions.pdf | Bin 0 -> 14743 bytes ...tml_table_with_imgs_captions_and_colspan.pdf | Bin 0 -> 22584 bytes test/html/html_table_with_only_tds.pdf | Bin 0 -> 1038 bytes 7 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 test/html/html_table_with_img.pdf create mode 100644 test/html/html_table_with_img_without_explicit_dimensions.pdf create mode 100644 test/html/html_table_with_imgs_captions_and_colspan.pdf create mode 100644 test/html/html_table_with_only_tds.pdf diff --git a/CHANGELOG.md b/CHANGELOG.md index e58921fa4..89d268173 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,9 +17,10 @@ in order to get warned about deprecated features used in your code. This can also be enabled programmatically with `warnings.simplefilter('default', DeprecationWarning)`. ## [2.7.4] - Not released yet - ### Added - documentation on how to embed `graphs` and `charts` generated using `Pygal` lib: [documentation section](https://pyfpdf.github.io/fpdf2/Maths.html#using-pygal) - thanks to @ssavi-ict +### Changed +- [`FPDF.write_html()`](https://pyfpdf.github.io/fpdf2/fpdf/fpdf.html#fpdf.fpdf.FPDF.write_html) does not render the top row as a header, in bold with a line below, when no `` are used, in order to be more backward-compatible with earlier versions of `fpdf2` - _cf._ [#740](https://github.com/PyFPDF/fpdf2/issues/740) ## [2.7.3] - 2023-04-03 ### Fixed @@ -29,7 +30,6 @@ This can also be enabled programmatically with `warnings.simplefilter('default', ### Fixed - custom fonts can be used with `FPDF.table()` without triggering a `TypeError: cannot pickle 'dict_keys' object` - thanks @aeris07 for the bug report - the SVG parser now accepts `` with `width` / `height` defined as percents - ### Added - documentation on how to generate Code128 barcodes using the `python-barcode` lib: [documentation section](https://pyfpdf.github.io/fpdf2/Barcodes.html#Code128) diff --git a/fpdf/html.py b/fpdf/html.py index 6ad4a8954..be6545b25 100644 --- a/fpdf/html.py +++ b/fpdf/html.py @@ -10,8 +10,9 @@ from html.parser import HTMLParser from .enums import TextEmphasis, XPos, YPos +from .errors import FPDFException from .fonts import FontFace -from .table import Table +from .table import Table, TableBordersLayout import re @@ -447,13 +448,23 @@ def handle_starttag(self, tag, attrs): ) self.pdf.ln() if tag == "tr": + if not self.table: + raise FPDFException("Invalid HTML: used outside any ") self.tr = {k.lower(): v for k, v in attrs.items()} self.table_row = self.table.row() if tag in ("td", "th"): + if not self.table_row: + raise FPDFException(f"Invalid HTML: <{tag}> used outside any ") self.td_th = {k.lower(): v for k, v in attrs.items()} if tag == "th": self.td_th["align"] = "CENTER" self.td_th["b"] = True + elif len(self.table.rows) == 1 and not self.table_row.cells: + # => we are in the 1st , and the 1st cell is a
+ # => we do not treat the first row as a header + # pylint: disable=protected-access + self.table._borders_layout = TableBordersLayout.NONE + self.table._first_row_as_headings = False if "height" in attrs: LOGGER.warning( 'Ignoring unsupported height="%s" specified on a <%s>', diff --git a/fpdf/table.py b/fpdf/table.py index 44a812745..ec132df88 100644 --- a/fpdf/table.py +++ b/fpdf/table.py @@ -186,7 +186,11 @@ def get_cell_border(self, i, j): def _render_table_row(self, i, fill=False, **kwargs): row = self.rows[i] lines_heights_per_cell = self._get_lines_heights_per_cell(i) - row_height = max(sum(lines_heights) for lines_heights in lines_heights_per_cell) + row_height = ( + max(sum(lines_heights) for lines_heights in lines_heights_per_cell) + if lines_heights_per_cell + else 0 + ) j = 0 while j < len(row.cells): cell_line_height = row_height / len(lines_heights_per_cell[j]) diff --git a/test/html/html_table_with_img.pdf b/test/html/html_table_with_img.pdf new file mode 100644 index 0000000000000000000000000000000000000000..75ab7a9839b33fa2246e445d7a15f42ea06ee76b GIT binary patch literal 14743 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 XHn6q-%{+h;$O*!D`BGd#0^|Px9>*>g literal 0 HcmV?d00001 diff --git a/test/html/html_table_with_img_without_explicit_dimensions.pdf b/test/html/html_table_with_img_without_explicit_dimensions.pdf new file mode 100644 index 0000000000000000000000000000000000000000..75ab7a9839b33fa2246e445d7a15f42ea06ee76b GIT binary patch literal 14743 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 XHn6q-%{+h;$O*!D`BGd#0^|Px9>*>g literal 0 HcmV?d00001 diff --git a/test/html/html_table_with_imgs_captions_and_colspan.pdf b/test/html/html_table_with_imgs_captions_and_colspan.pdf new file mode 100644 index 0000000000000000000000000000000000000000..dc352bb9e7713fa64df056f7f851fe7d50d6af82 GIT binary patch literal 22584 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 literal 0 HcmV?d00001 diff --git a/test/html/html_table_with_only_tds.pdf b/test/html/html_table_with_only_tds.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5778c2f771f8a040e1f8e4e0bdb03bd90c45d614 GIT binary patch literal 1038 zcmah|O=uHA6h2sg7%x&3K@kRNT1DF3$!0gZnntqOELJOxo1$P0xJ@Q;bu-iMP9RkT z!HRfLdJ!uWMex#-hzPy=)0-C&v8ae1L_`YWO$2B1W0&^eTxR!s^S<}q_uh-;Eqf3R zDF8tk(uwmRl>$e>^ z7)p7!hC`4}157G{E*_yBo5UnjW*#LSPAJ(PI|50=_c?)Z9d)N^gF$JG;4JkUb<&1I zDAIGfL9#A$eOilz5h<=_PZ%aFgo(CK-VOL~m%+gyZ3JZ;LM=)uf=Bp-YnRXVe1-#_ ztM4*w;WDjYAdO;DW9J}JWZ@OE0K0Y2oUh+J1fI#;HeR~_`S#S4cW;)0FXn;n9rpqxa8-Z_CzR zA$up8P6O0PC8ir)YO2%~%i{-{_ F@E1&-EQ0_5 literal 0 HcmV?d00001