aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mammoth/conversion.py2
-rw-r--r--mammoth/html_generation.py5
-rw-r--r--tests/conversion_tests.py16
3 files changed, 21 insertions, 2 deletions
diff --git a/mammoth/conversion.py b/mammoth/conversion.py
index fa1333b..0349774 100644
--- a/mammoth/conversion.py
+++ b/mammoth/conversion.py
@@ -89,7 +89,7 @@ class DocumentConverter(object):
def _convert_table_cell(self, table_cell, html_generator):
- html_generator.start("td")
+ html_generator.start("td", always_write=True)
for child in table_cell.children:
child_generator = HtmlGenerator()
self.convert_element_to_html(child, child_generator)
diff --git a/mammoth/html_generation.py b/mammoth/html_generation.py
index 8395a3d..32a0d62 100644
--- a/mammoth/html_generation.py
+++ b/mammoth/html_generation.py
@@ -12,8 +12,11 @@ class HtmlGenerator(object):
self._write_all()
self._fragments.append(_escape_html(text))
- def start(self, name, attributes=None):
+ def start(self, name, attributes=None, always_write=False):
self._stack.append(_Element(name, attributes))
+
+ if always_write:
+ self._write_all()
def end(self):
element = self._stack.pop()
diff --git a/tests/conversion_tests.py b/tests/conversion_tests.py
index 3c5ff88..9cb8757 100644
--- a/tests/conversion_tests.py
+++ b/tests/conversion_tests.py
@@ -192,6 +192,22 @@ def docx_table_is_converted_to_table_in_html():
@istest
+def empty_cells_are_preserved_in_table():
+ table = documents.table([
+ documents.table_row([
+ documents.table_cell([_paragraph_with_text("")]),
+ documents.table_cell([_paragraph_with_text("Top right")]),
+ ]),
+ ])
+ result = convert_document_element_to_html(table)
+ expected_html = (
+ "<table>" +
+ "<tr><td></td><td><p>Top right</p></td></tr>" +
+ "</table>")
+ assert_equal(expected_html, result.value)
+
+
+@istest
def images_are_converted_to_img_tags_with_data_uri():
image = documents.image(alt_text=None, content_type="image/png", open=lambda: io.BytesIO(b"abc"))
result = convert_document_element_to_html(image)