From bc8c341b37bfac34bbeaccdd5368c2d7edc309ac Mon Sep 17 00:00:00 2001 From: Bruno Herfst Date: Wed, 26 Oct 2016 11:04:09 +1100 Subject: Add support for page and column breaks --- mammoth/docx/body_xml.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'mammoth/docx') diff --git a/mammoth/docx/body_xml.py b/mammoth/docx/body_xml.py index 22d8440..1fcd567 100644 --- a/mammoth/docx/body_xml.py +++ b/mammoth/docx/body_xml.py @@ -253,7 +253,8 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f return children_result.map(lambda children: documents.hyperlink(anchor=anchor, children=children)) else: return children_result - + + def bookmark_start(element): name = element.attributes.get("w:name") if name == "_GoBack": @@ -262,13 +263,19 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f return _success(documents.bookmark(name)) - def br(element): + def break_(element): break_type = element.attributes.get("w:type") - if break_type: + + if not break_type or break_type == "textWrapping": + return _success(documents.line_break) + elif break_type == "page": + return _success(documents.page_break) + elif break_type == "column": + return _success(documents.column_break) + else: warning = results.warning("Unsupported break type: {0}".format(break_type)) return _empty_result_with_message(warning) - else: - return _success(documents.line_break()) + def inline(element): properties = element.find_child_or_null("wp:docPr").attributes @@ -372,7 +379,7 @@ def _create_reader(numbering, content_types, relationships, styles, docx_file, f "w:pict": pict, "w:hyperlink": hyperlink, "w:bookmarkStart": bookmark_start, - "w:br": br, + "w:br": break_, "wp:inline": inline, "wp:anchor": inline, "v:imagedata": read_imagedata, -- cgit v1.2.3