Skip to content

Commit 0d88bfe

Browse files
committed
Commit for patch 24.5.1
1 parent badb5ee commit 0d88bfe

File tree

2 files changed

+50
-6
lines changed

2 files changed

+50
-6
lines changed

FileFormat.Words/OpenXML.Words.Data.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.Collections.Generic;
33
using System.Collections.Concurrent;
44
using DF = DocumentFormat.OpenXml;
@@ -22,7 +22,7 @@ private OoxmlDocData(WordprocessingDocument doc)
2222
{
2323
lock (_lockObject)
2424
{
25-
_ooxmlDoc = OwDocument.CreateInstance();
25+
_ooxmlDoc = OwDocument.CreateInstance(doc);
2626
_staticDocCount++;
2727
_staticDocDict.TryAdd(_staticDocCount,doc);
2828
}
@@ -58,7 +58,9 @@ internal void Insert(FF.IElement newElement, int position,Document doc)
5858
_staticDocDict.TryGetValue(doc.GetInstanceInfo(), out WordprocessingDocument staticDoc);
5959

6060
if (staticDoc?.MainDocumentPart?.Document?.Body == null) throw new FileFormatException("Package or Document or Body is null",new NullReferenceException());
61-
61+
62+
_ooxmlDoc = OwDocument.CreateInstance(staticDoc);
63+
6264
var enumerable = staticDoc.MainDocumentPart.Document.Body.Elements().ToList();
6365
var originalElements = new List<DF.OpenXmlElement>(enumerable);
6466

@@ -105,7 +107,9 @@ internal void Update(FF.IElement newElement, int position,Document doc)
105107
_staticDocDict.TryGetValue(doc.GetInstanceInfo(), out WordprocessingDocument staticDoc);
106108

107109
if (staticDoc?.MainDocumentPart?.Document?.Body == null) throw new FileFormatException("Package or Document or Body is null", new NullReferenceException());
108-
110+
111+
_ooxmlDoc = OwDocument.CreateInstance(staticDoc);
112+
109113
var enumerable = staticDoc.MainDocumentPart.Document.Body.Elements().ToList();
110114
var originalElements = new List<DF.OpenXmlElement>(enumerable);
111115

@@ -183,6 +187,8 @@ internal void Append(FF.IElement newElement,Document doc)
183187

184188
if (staticDoc?.MainDocumentPart?.Document?.Body == null) throw new FileFormatException("Package or Document or Body is null", new NullReferenceException());
185189

190+
_ooxmlDoc = OwDocument.CreateInstance(staticDoc);
191+
186192
var enumerable = staticDoc.MainDocumentPart.Document.Body.Elements().ToList();
187193
var originalElements = new List<DF.OpenXmlElement>(enumerable);
188194

FileFormat.Words/OpenXML.Words.cs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.IO;
33
using System.Linq;
44
using System.Collections.Generic;
@@ -55,6 +55,38 @@ private OwDocument()
5555
}
5656
}
5757
}
58+
private OwDocument(WordprocessingDocument pkg)
59+
{
60+
lock (_lockObject)
61+
{
62+
try
63+
{
64+
//_ms = new MemoryStream();
65+
_pkgDocument = pkg;
66+
_mainPart = pkg.MainDocumentPart;
67+
//_mainPart.Document = new WP.Document();
68+
//var tmp = new OT.DefaultTemplate();
69+
//tmp.CreateMainDocumentPart(_mainPart);
70+
//CreateProperties(_pkgDocument);
71+
72+
_numberingPart = _mainPart.NumberingDefinitionsPart;
73+
74+
if (_numberingPart != null)
75+
{
76+
_IDs = new List<int>();
77+
foreach (var abstractNum in _numberingPart.Numbering.Elements<WP.AbstractNum>())
78+
{
79+
_IDs.Add(abstractNum.AbstractNumberId);
80+
}
81+
}
82+
}
83+
catch (Exception ex)
84+
{
85+
var errorMessage = OWD.OoxmlDocData.ConstructMessage(ex, "Initialize OOXML Element(s)");
86+
throw new FileFormatException(errorMessage, ex);
87+
}
88+
}
89+
}
5890

5991
#region Create Core Properties for OpenXML Word Document
6092
internal void CreateProperties(WordprocessingDocument pkgDocument)
@@ -92,6 +124,11 @@ public static OwDocument CreateInstance()
92124
return new OwDocument();
93125
}
94126

127+
public static OwDocument CreateInstance(WordprocessingDocument pkg)
128+
{
129+
return new OwDocument(pkg);
130+
}
131+
95132
#region Create OpenXML Word Document Contents Based on FileFormat.Words.IElements
96133

97134
#region Main Method
@@ -694,7 +731,8 @@ internal FF.Paragraph LoadParagraph(WP.Paragraph wpPara, int id)
694731
{
695732
if (_numberingPart != null)
696733
{
697-
if (ffP.NumberingId != null && ffP.NumberingLevel != null)
734+
if (paraProps.NumberingProperties.NumberingId.Val != null &&
735+
paraProps.NumberingProperties.NumberingLevelReference.Val != null)
698736
{
699737
ffP.NumberingId = paraProps.NumberingProperties.NumberingId.Val;
700738
ffP.NumberingLevel = paraProps.NumberingProperties.NumberingLevelReference.Val + 1;

0 commit comments

Comments
 (0)