From 7a672fdb59b2d697cab3f80a1ac96b6e5b2117c7 Mon Sep 17 00:00:00 2001 From: "Aleksey.Rodchenkov" Date: Thu, 18 Mar 2021 19:40:57 +0300 Subject: [PATCH 1/2] fix \r\n --- ...entWithSingleFieldFilledWithLinebreaks.xml | 20 ++++++++++++++++++- .../OpenXMLHelpers/XElementExtensions.cs | 18 ++++++++++------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml b/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml index d3236a5..be3da22 100644 --- a/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml +++ b/sources/TemplateEngine.Docx.Tests/Resources/DocumentWithSingleFieldFilledWithLinebreaks.xml @@ -1,2 +1,20 @@  -09/06/2013Friday, 06 September 20132013 September \ No newline at end of file + + + + + 09/06/2013 + + Friday, 06 September 2013 + + 2013 September + + + + + + + + + + \ No newline at end of file diff --git a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs index ae83812..ce98e08 100644 --- a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs +++ b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs @@ -143,18 +143,22 @@ public static void ReplaceNewLinesWithBreaks(XElement xElem) { if (xElem == null) return; - var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\r\n")); - foreach (var textWithBreak in textWithBreaks) - { + var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\r\n")).ToList(); + for (var i = textWithBreaks.Count - 1; i >= 0; i--) + { + var textWithBreak = textWithBreaks[i]; var text = textWithBreak.Value; var split = text.Replace("\r\n", "\n").Split(new[] { "\n" }, StringSplitOptions.None); - textWithBreak.Value = string.Empty; + + var parent = textWithBreak.Parent; + textWithBreak.Remove(); + foreach (var s in split) { - textWithBreak.Add(new XElement(W.t, s)); - textWithBreak.Add(new XElement(W.br)); + parent.Add(new XElement(W.t, s)); + parent.Add(new XElement(W.br)); } - textWithBreak.Descendants(W.br).Last().Remove(); + parent.Descendants(W.br).Last().Remove(); } } } From 58e391d7684333039a93b2adb4fef0b30d8493c8 Mon Sep 17 00:00:00 2001 From: "Aleksey.Rodchenkov" Date: Fri, 19 Mar 2021 10:08:31 +0300 Subject: [PATCH 2/2] \n insted of \r\n --- .../TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs index ce98e08..abda7e9 100644 --- a/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs +++ b/sources/TemplateEngine.Docx/OpenXMLHelpers/XElementExtensions.cs @@ -143,7 +143,7 @@ public static void ReplaceNewLinesWithBreaks(XElement xElem) { if (xElem == null) return; - var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\r\n")).ToList(); + var textWithBreaks = xElem.Descendants(W.t).Where(t => t.Value.Contains("\n")).ToList(); for (var i = textWithBreaks.Count - 1; i >= 0; i--) { var textWithBreak = textWithBreaks[i];