diff --git a/src/calibre/ebooks/docx/writer/styles.py b/src/calibre/ebooks/docx/writer/styles.py index 998a7a4a09..ffa21da27c 100644 --- a/src/calibre/ebooks/docx/writer/styles.py +++ b/src/calibre/ebooks/docx/writer/styles.py @@ -279,6 +279,8 @@ class BlockStyle(DOCXStyle): for edge in border_edges: setattr(self, 'border_%s_style' % edge, 'none') setattr(self, 'border_%s_width' % edge, 0) + setattr(self, 'padding_' + edge, 0) + setattr(self, 'margin_' + edge, 0) if css is None: self.page_break_before = self.keep_lines = False self.text_indent = 0 diff --git a/src/calibre/ebooks/docx/writer/tables.py b/src/calibre/ebooks/docx/writer/tables.py index c339ea9b11..11e90f9512 100644 --- a/src/calibre/ebooks/docx/writer/tables.py +++ b/src/calibre/ebooks/docx/writer/tables.py @@ -30,6 +30,7 @@ def read_css_block_borders(self, css): getattr(obj, 'border_%s_color' % edge), self.BLEVEL )) + setattr(self, 'padding_' + edge, getattr(obj, 'padding_' + edge)) def as_percent(x): if x and x.endswith('%'): @@ -91,6 +92,7 @@ class Cell(object): bc = self.background_color or self.row.background_color or self.row.table.background_color if bc: makeelement(tcPr, 'w:shd', w_val="clear", w_color="auto", w_fill=bc) + b = makeelement(tcPr, 'w:tcBorders', append=False) for edge, border in self.borders.iteritems(): if border.width > 0 and border.style != 'none': @@ -98,6 +100,16 @@ class Cell(object): if len(b) > 0: tcPr.append(b) + m = makeelement(tcPr, 'w:tcMar', append=False) + for edge in border_edges: + padding = getattr(self, 'padding_' + edge) + if edge in {'top', 'bottom'} or (edge == 'left' and self is self.row.first_cell) or (edge == 'right' and self is self.row.last_cell): + padding += getattr(self.row, 'padding_' + edge) + if padding > 0: + makeelement(m, 'w:' + edge, w_type='dxa', w_w=str(int(padding * 20))) + if len(m) > 0: + tcPr.append(m) + for item in self.items: item.serialize(tc)