Skip to content

Commit f464d5f

Browse files
authored
Merge pull request #30 from sabir-aspose/main
Fix Unhandled Numbering ID and Reference Scenario
2 parents 9fd91e2 + 5f1b470 commit f464d5f

File tree

1 file changed

+40
-22
lines changed

1 file changed

+40
-22
lines changed

OpenXML.Words.cs

Lines changed: 40 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -790,35 +790,38 @@ internal FF.Paragraph LoadParagraph(WP.Paragraph wpPara, int id)
790790

791791
if (ffP.Style == "ListParagraph")
792792
{
793-
if (_numberingPart != null)
793+
if (isNumbered(paraProps))
794794
{
795-
if (paraProps.NumberingProperties.NumberingId.Val != null &&
796-
paraProps.NumberingProperties.NumberingLevelReference.Val != null)
795+
if (_numberingPart != null)
797796
{
798-
ffP.NumberingId = paraProps.NumberingProperties.NumberingId.Val;
799-
ffP.NumberingLevel = paraProps.NumberingProperties.NumberingLevelReference.Val + 1;
800-
801-
var numbering = _numberingPart.Numbering;
802-
var abstractNum = numbering.Elements<WP.AbstractNum>().FirstOrDefault(an => an.AbstractNumberId == ffP.NumberingId);
803-
if (abstractNum != null)
797+
if (paraProps.NumberingProperties.NumberingId.Val != null &&
798+
paraProps.NumberingProperties.NumberingLevelReference.Val != null)
804799
{
805-
var level = abstractNum.Elements<WP.Level>().FirstOrDefault(l => l.LevelIndex == ffP.NumberingLevel - 1);
806-
if (level != null)
800+
ffP.NumberingId = paraProps.NumberingProperties.NumberingId.Val;
801+
ffP.NumberingLevel = paraProps.NumberingProperties.NumberingLevelReference.Val + 1;
802+
803+
var numbering = _numberingPart.Numbering;
804+
var abstractNum = numbering.Elements<WP.AbstractNum>().FirstOrDefault(an => an.AbstractNumberId == ffP.NumberingId);
805+
if (abstractNum != null)
807806
{
808-
if (level.NumberingFormat.Val == WP.NumberFormatValues.Decimal)
809-
ffP.IsNumbered = true;
810-
else if (level.NumberingFormat.Val == WP.NumberFormatValues.LowerLetter)
811-
ffP.IsAlphabeticNumber = true;
812-
else if (level.NumberingFormat.Val == WP.NumberFormatValues.LowerRoman)
813-
ffP.IsRoman = true;
814-
else if (level.NumberingFormat.Val == WP.NumberFormatValues.Bullet)
815-
ffP.IsBullet = true;
816-
else
817-
ffP.IsNumbered = true;
807+
var level = abstractNum.Elements<WP.Level>().FirstOrDefault(l => l.LevelIndex == ffP.NumberingLevel - 1);
808+
if (level != null)
809+
{
810+
if (level.NumberingFormat.Val == WP.NumberFormatValues.Decimal)
811+
ffP.IsNumbered = true;
812+
else if (level.NumberingFormat.Val == WP.NumberFormatValues.LowerLetter)
813+
ffP.IsAlphabeticNumber = true;
814+
else if (level.NumberingFormat.Val == WP.NumberFormatValues.LowerRoman)
815+
ffP.IsRoman = true;
816+
else if (level.NumberingFormat.Val == WP.NumberFormatValues.Bullet)
817+
ffP.IsBullet = true;
818+
else
819+
ffP.IsNumbered = true;
820+
}
818821
}
819822
}
820-
}
821823

824+
}
822825
}
823826
}
824827

@@ -959,6 +962,21 @@ private bool isIndented(WP.ParagraphProperties prop)
959962
}
960963
}
961964

965+
private bool isNumbered(WP.ParagraphProperties prop)
966+
{
967+
try
968+
{
969+
var numbering = prop.NumberingProperties;
970+
var numberingId = numbering.NumberingId.Val;
971+
var numberingRef = numbering.NumberingLevelReference.Val;
972+
return true;
973+
}
974+
catch (Exception ex)
975+
{
976+
return false;
977+
}
978+
}
979+
962980
#endregion
963981

964982
#region Load OpenXML Image

0 commit comments

Comments
 (0)