public void Default_Numbered_Test() { Document doc = new Document(); int totalcount = 10; //Add ten pages with default numbering for (int i = 0; i < totalcount; i++) { Page pg = new Page(); doc.Pages.Add(pg); PageNumberLabel lbl = new PageNumberLabel(); pg.Contents.Add(lbl); } using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { doc.LayoutComplete += Doc_LayoutCompleted; doc.SaveAsPDF(ms); } for (int i = 0; i < totalcount; i++) { int pgNum = i + 1; PDFLayoutPage lpg = layout.AllPages[i]; PDFPageNumberData data = lpg.GetPageNumber(); //Check the number Assert.AreEqual(pgNum, data.PageNumber); Assert.AreEqual(totalcount, data.LastPageNumber); Assert.AreEqual(pgNum, data.GroupNumber); Assert.AreEqual(totalcount, data.GroupLastNumber); Assert.AreEqual(pgNum.ToString(), data.ToString()); } }
public void DefaultWithSection_Numbered_Test() { Document doc = new Document(); int totalcount = 10; //Add ten pages with default numbering for (int i = 0; i < totalcount; i++) { if (i == 5) { Section section = new Section(); section.PageNumberStyle = PageNumberStyle.UppercaseLetters; doc.Pages.Add(section); for (int j = 0; j < 4; j++) //4 page breaks = 5 pages { PageBreak br = new PageBreak(); section.Contents.Add(br); } } else { Page pg = new Page(); doc.Pages.Add(pg); PageNumberLabel lbl = new PageNumberLabel(); pg.Contents.Add(lbl); } } using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { doc.LayoutComplete += Doc_LayoutCompleted; doc.SaveAsPDF(ms); } string[] allpages = new string[] { "1", "2", "3", "4", "5", "A", "B", "C", "D", "E", "6", "7", "8", "9" }; string[] grptotal = new string[] { "5", "5", "5", "5", "5", "E", "E", "E", "E", "E", "9", "9", "9", "9" }; for (int i = 0; i < allpages.Length; i++) { string expected = string.Format("Page {0} of {1} ({2} of {3})", allpages[i], grptotal[i], i + 1, allpages.Length); PDFLayoutPage lpg = layout.AllPages[i]; PDFPageNumberData data = lpg.GetPageNumber(); string actual = data.ToString("Page {0} of {1} ({2} of {3})"); Assert.AreEqual(expected, actual); TestContext.WriteLine("Expected '{0}', Actual '{1}'", expected, actual); } }
public void DocumentPrefixUpperAlpha_Numbered_Test() { Document doc = new Document(); //Add a catch all number style definition for upper letter with Prefix StyleDefn pgNumStyle = new StyleDefn(); pgNumStyle.AppliedType = typeof(Document); pgNumStyle.PageStyle.NumberStyle = PageNumberStyle.UppercaseLetters; doc.Styles.Add(pgNumStyle); int totalcount = 10; //Add ten pages with default numbering for (int i = 0; i < totalcount; i++) { Page pg = new Page(); doc.Pages.Add(pg); PageNumberLabel lbl = new PageNumberLabel(); pg.Contents.Add(lbl); } using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { doc.LayoutComplete += Doc_LayoutCompleted; doc.SaveAsPDF(ms); } //Check the numbers for (int i = 0; i < totalcount; i++) { int pgNum = i + 1; PDFLayoutPage lpg = layout.AllPages[i]; PDFPageNumberData data = lpg.GetPageNumber(); //Check the number Assert.AreEqual(pgNum, data.PageNumber, "Page Number failed"); Assert.AreEqual(totalcount, data.LastPageNumber, "Last Page number failed"); Assert.AreEqual(pgNum, data.GroupNumber, "Group number failed"); Assert.AreEqual(totalcount, data.GroupLastNumber, "Last Group number failed"); //Should be upper letter with hash prefix string output = ((char)((int)'A' + i)).ToString(); Assert.AreEqual(output, data.ToString(), "String result failed"); } }
public void SinglePage_Numbered_Test() { Document doc = new Document(); Page pg = new Page(); doc.Pages.Add(pg); //First page with pg.Style.PageStyle.NumberStyle = PageNumberStyle.UppercaseLetters; PageNumberLabel lbl = new PageNumberLabel(); pg.Contents.Add(lbl); // second page - no style so back to default. pg = new Page(); doc.Pages.Add(pg); lbl = new PageNumberLabel(); pg.Contents.Add(lbl); // second page - continues default. pg = new Page(); doc.Pages.Add(pg); lbl = new PageNumberLabel(); pg.Contents.Add(lbl); using (System.IO.MemoryStream ms = new System.IO.MemoryStream()) { doc.LayoutComplete += Doc_LayoutCompleted; doc.SaveAsPDF(ms); } //check page 1 PDFLayoutLine line = layout.AllPages[0].ContentBlock.Columns[0].Contents[0] as PDFLayoutLine; //first line of the first region, of the first group of the first page PDFTextRunProxy chars = (PDFTextRunProxy)line.Runs[1]; //Start text, Chars, End Text Assert.AreEqual("A", chars.Proxy.Text); //check page 2 line = layout.AllPages[1].ContentBlock.Columns[0].Contents[0] as PDFLayoutLine; //first line of the first region, of the first group of the second page chars = (PDFTextRunProxy)line.Runs[1]; //Start text, Chars, End Text Assert.AreEqual("1", chars.Proxy.Text); //check page 3 line = layout.AllPages[2].ContentBlock.Columns[0].Contents[0] as PDFLayoutLine; //first line of the first region, of the first group of the second page chars = (PDFTextRunProxy)line.Runs[1]; //Start text, Chars, End Text Assert.AreEqual("2", chars.Proxy.Text); }
public void PageNumbering_FullStyledMultiSectionDocument() { Document doc = new Document(); for (int i = 0; i < 4; i++) { Section group = new Section(); if (i == 0) { group.Style.PageStyle.NumberStyle = PageNumberStyle.LowercaseLetters; } if (i == 1) { group.Style.PageStyle.NumberStyle = PageNumberStyle.LowercaseRoman; group.Style.PageStyle.NumberStartIndex = 1; } else if (i == 2) { group.Style.PageStyle.NumberStyle = PageNumberStyle.UppercaseLetters; group.Style.PageStyle.NumberStartIndex = 2; } doc.Pages.Add(group); for (int j = 0; j < 4; j++) { PageNumberLabel pgNum = new PageNumberLabel(); group.Contents.Add(pgNum); PageBreak br = new PageBreak(); group.Contents.Add(br); } } doc.ViewPreferences.PageDisplay = PageDisplayMode.Thumbnails; doc.LayoutComplete += Doc_LayoutComplete; using (var ms = DocStreams.GetOutputStream("Numbering_StyledMultiSection.pdf")) doc.SaveAsPDF(ms); var ldoc = this._layout; // page indices 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , 12, 13, 14, 15, 16, 17, 18, 19 string[] expectedlabels = new string[] { "a", "b", "c", "d", "e", "i", "ii", "iii", "iv", "v", "B", "C", "D", "E", "F", "1", "2", "3", "4", "5" }; int index = -1; List <string> actuallabels = new List <string>(); Assert.AreEqual(20, ldoc.AllPages.Count); int last = -1; foreach (Scryber.Layout.PDFLayoutPage pg in ldoc.AllPages) { index = pg.PageIndex; Assert.AreEqual(last + 1, index, "Page numbers are not in synch"); last = index; //Get the page number details for the page PDFPageNumberData num = pg.GetPageNumber(); actuallabels.Add(num.Label); if (index < 5) { Assert.AreEqual(index + 1, num.GroupNumber); Assert.AreEqual(index + 1, num.PageNumber); Assert.AreEqual(20, num.LastPageNumber); Assert.AreEqual(5, num.GroupLastNumber); Assert.AreEqual(expectedlabels[index], num.Label); Assert.AreEqual("e", num.LastLabel); } else if (index < 10) { Assert.AreEqual(index + 1, num.PageNumber); Assert.AreEqual(20, num.LastPageNumber); index -= 5; Assert.AreEqual(index + 1, num.GroupNumber); Assert.AreEqual(5, num.GroupLastNumber); Assert.AreEqual(Scryber.Utilities.NumberHelper.GetRomanLower(index + 1), num.Label); Assert.AreEqual("v", num.LastLabel); } else if (index < 15) { Assert.AreEqual(index + 1, num.PageNumber); Assert.AreEqual(20, num.LastPageNumber); index -= 10; Assert.AreEqual(index + 1, num.GroupNumber); Assert.AreEqual(5, num.GroupLastNumber); Assert.AreEqual(Scryber.Utilities.NumberHelper.GetLetterUpper(index + 2), num.Label); Assert.AreEqual("F", num.LastLabel); } else { Assert.AreEqual(index + 1, num.PageNumber); Assert.AreEqual(20, num.LastPageNumber); //labels are based from the continuation of the sequence Assert.AreEqual(expectedlabels[index], num.Label); Assert.AreEqual("5", num.LastLabel); //group is one based from the start of that sequence index -= 15; Assert.AreEqual(index + 1, num.GroupNumber); Assert.AreEqual(5, num.GroupLastNumber); } } string fullexpected = string.Join(", ", expectedlabels); string fullactual = string.Join(", ", actuallabels); Assert.AreEqual(fullexpected, fullactual); }