diff --git a/OpenXmlPowerTools/WmlToHtmlConverter.cs b/OpenXmlPowerTools/WmlToHtmlConverter.cs
index aaf47143..ade934a2 100644
--- a/OpenXmlPowerTools/WmlToHtmlConverter.cs
+++ b/OpenXmlPowerTools/WmlToHtmlConverter.cs
@@ -14,6 +14,9 @@
Twitter: @EricWhiteDev
Email: eric@ericwhite.com
+Version : 3.1.12b ( Q2C )
+* Add page break functionality
+
Version: 3.1.12
* Improve layout of list items, using "display: inline-block" with a width rule.
* Streamline HTML, omitting unnecessary formatting-related HTML (e.g., bold, italic).
@@ -405,6 +408,17 @@ private static void SetStyleElementValue(XElement xhtml, string styleValue)
}
}
+ private static bool HasAPageBreak(XElement element)
+ {
+ if(element != null && element.Descendants() != null)
+ {
+ var validElements = element.Descendants().Where(el => el.Name == W.br).ToList();
+ return validElements.Descendants().Any(dl => dl != null && dl.Attribute(W.type).Value != null && dl.Attribute(W.type).Value == "page");
+
+ }
+ return false;
+ }
+
private static object ConvertToHtmlTransform(WordprocessingDocument wordDoc,
WmlToHtmlConverterSettings settings, XNode node,
bool suppressTrailingWhiteSpace,
@@ -478,7 +492,15 @@ private static object ConvertToHtmlTransform(WordprocessingDocument wordDoc,
// Transform contents of runs.
if (element.Name == W.r)
{
- return ConvertRun(wordDoc, settings, element);
+ if (HasAPageBreak(element)) //Page break must happen in the parent of the element ( in HTML). So no runs then.
+ {
+ return ProcessPageBreak(element);
+ }
+ else
+ {
+ return ConvertRun(wordDoc, settings, element);
+ }
+
}
// Transform w:bookmarkStart into anchor
@@ -686,6 +708,20 @@ private static object ProcessTab(XElement element)
return span;
}
+ private static object ProcessPageBreak(XElement element)
+ {
+ XElement div = new XElement(Xhtml.div);
+ div.SetAttributeValue(NoNamespace.style, "page-break-before:always;");
+ XElement span = null;
+
+ return new object[]
+ {
+ div,
+ new XEntity("#x200e"),
+ span
+ };
+ }
+
private static object ProcessBreak(XElement element)
{
XElement span = null;