From 171fd52e6e55c5e34fb98eb3692796a867196e17 Mon Sep 17 00:00:00 2001 From: GrabzIt Date: Tue, 19 Sep 2017 21:13:36 +0100 Subject: [PATCH 1/2] Fixed broken DifferentOddAndEvenPages property --- DocX/DocX.cs | 67 ++++++++++++++++++++++------------------------------ 1 file changed, 28 insertions(+), 39 deletions(-) diff --git a/DocX/DocX.cs b/DocX/DocX.cs index 6f5832fd..c73913ee 100644 --- a/DocX/DocX.cs +++ b/DocX/DocX.cs @@ -706,35 +706,21 @@ public bool DifferentOddAndEvenPages { get { - XDocument settings; - using (TextReader tr = new StreamReader(settingsPart.GetStream())) - settings = XDocument.Load(tr); - - XElement evenAndOddHeaders = settings.Root.Element(w + "evenAndOddHeaders"); - - return evenAndOddHeaders != null; + return settings.Root.Element(w + "evenAndOddHeaders") != null; } - set { - XDocument settings; - using (TextReader tr = new StreamReader(settingsPart.GetStream())) - settings = XDocument.Load(tr); - XElement evenAndOddHeaders = settings.Root.Element(w + "evenAndOddHeaders"); - if (evenAndOddHeaders == null) + if (evenAndOddHeaders != null) { - if (value) - settings.Root.AddFirst(new XElement(w + "evenAndOddHeaders")); + evenAndOddHeaders.Remove(); } - else + if (value) { - if (!value) - evenAndOddHeaders.Remove(); + evenAndOddHeaders = new XElement(XName.Get("evenAndOddHeaders", w.NamespaceName)); + evenAndOddHeaders.Add(new XAttribute(XName.Get("val", w.NamespaceName), "1")); + settings.Root.AddFirst(evenAndOddHeaders); } - - using (TextWriter tw = new StreamWriter(new PackagePartStream(settingsPart.GetStream()))) - settings.Save(tw); } } @@ -1425,7 +1411,8 @@ private void merge_images(PackagePart remote_pp, DocX remote_document, XDocument // Before doing any other work, check to see if this image is actually referenced in the document. // In my testing I have found cases of Images inside documents that are not referenced var remote_rel = remote_document.mainPart.GetRelationships().Where(r => r.TargetUri.OriginalString.Equals(remote_pp.Uri.OriginalString.Replace("/word/", ""))).FirstOrDefault(); - if (remote_rel == null) { + if (remote_rel == null) + { remote_rel = remote_document.mainPart.GetRelationships().Where(r => r.TargetUri.OriginalString.Equals(remote_pp.Uri.OriginalString)).FirstOrDefault(); if (remote_rel == null) return; @@ -3694,20 +3681,20 @@ select e.Attribute(r + "id").Value { using (FileStream fs = new FileStream(filename, FileMode.Create)) { - // Original code - // fs.Write( memoryStream.ToArray(), 0, (int)memoryStream.Length ); - // was replaced by save using small buffer - // CopyStream( memoryStream, fs); - // Corection is to make position equal to 0 - if(memoryStream.CanSeek) - { - // Write to the beginning of the stream - memoryStream.Position = 0; - CopyStream(memoryStream, fs); - } - else - fs.Write(memoryStream.ToArray(), 0, (int)memoryStream.Length); - } + // Original code + // fs.Write( memoryStream.ToArray(), 0, (int)memoryStream.Length ); + // was replaced by save using small buffer + // CopyStream( memoryStream, fs); + // Corection is to make position equal to 0 + if (memoryStream.CanSeek) + { + // Write to the beginning of the stream + memoryStream.Position = 0; + CopyStream(memoryStream, fs); + } + else + fs.Write(memoryStream.ToArray(), 0, (int)memoryStream.Length); + } } else { @@ -4409,11 +4396,13 @@ public void InsertChart(Chart chart) /// /// Insert a chart in document after paragraph /// - public void InsertChartAfterParagraph(Chart chart, Paragraph paragraph) { + public void InsertChartAfterParagraph(Chart chart, Paragraph paragraph) + { // Create a new chart part uri. String chartPartUriPath = String.Empty; Int32 chartIndex = 1; - do { + do + { chartPartUriPath = String.Format ( "/word/charts/chart{0}.xml", @@ -4595,4 +4584,4 @@ public void Dispose() #endregion } -} +} \ No newline at end of file From 28ffd10c03b285a3b323ad07e53aebf13c6e80eb Mon Sep 17 00:00:00 2001 From: GrabzIt Date: Wed, 20 Sep 2017 08:06:07 +0100 Subject: [PATCH 2/2] Fix for broken right to left text --- DocX/Paragraph.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/DocX/Paragraph.cs b/DocX/Paragraph.cs index 64f6e8de..6ff62337 100644 --- a/DocX/Paragraph.cs +++ b/DocX/Paragraph.cs @@ -424,7 +424,10 @@ public Direction Direction if (direction == Direction.RightToLeft) { if (bidi == null) + { pPr.Add(new XElement(XName.Get("bidi", DocX.w.NamespaceName))); + } + ApplyTextFormattingProperty(XName.Get("rtl", DocX.w.NamespaceName), string.Empty, null); } else {