public void PageCollection_Nested() { // structure | None | Start | Reset Numbers | Back To Start sequence | Back to None // output | 0 1 2 | 3 4 5 6 | 7 8 9 10 11 12 13 14 | 15 16 17 18 | 19 20 21 string[] expectedLabels = { "", "", "", "i", "ii", "iii", "iv", "i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "v", "vi", "vii", "viii", "", "", "" }; string[] expectedLastLabels = { "", "", "", "iv", "iv", "iv", "iv", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "viii", "", "", "" }; PDFPageNumbers col = new PDFPageNumbers(); col.StartNumbering(null); Style none = new Style(); none.PageStyle.NumberStyle = PageNumberStyle.None; PDFPageNumberGroup noneGrp = col.PushPageNumber(none.CreatePageNumberOptions()); int noneReg = 0; col.Register(noneReg); //keep none at the top - no unregister Style intro = new Style(); intro.PageStyle.NumberStyle = PageNumberStyle.LowercaseRoman; PDFPageNumberGroup introGrp = col.PushPageNumber(intro.CreatePageNumberOptions()); int introReg = 3; col.Register(introReg); //col.UnRegister(introUnreg); //col.PopNumberStyle(grp); //no style, just start index Style resetStartIndex = new Style(); resetStartIndex.PageStyle.NumberStartIndex = 1; PDFPageNumberGroup resetNumGrp = col.PushPageNumber(resetStartIndex.CreatePageNumberOptions()); int pgReg = 7; int pgUnreg = 14; col.Register(pgReg); col.UnRegister(pgUnreg); col.PopNumberStyle(resetNumGrp); int introUnreg = 18; col.UnRegister(introUnreg); col.PopNumberStyle(introGrp); int noneUnReg = 21; col.UnRegister(noneUnReg); col.PopNumberStyle(noneGrp); col.EndNumbering(); for (int i = 0; i < 21; i++) { PDFPageNumberData number = col.GetPageData(i); Assert.AreEqual(expectedLabels[i], number.Label, "Page labels did not match for index " + i); Assert.AreEqual(expectedLastLabels[i], number.LastLabel, "Page Last labels did not match for index " + i); } }