public void Layout(PDFLayoutContext context, Styles.Style fullstyle)
        {
            bool first = true;

            PDFPageNumberOptions opts = fullstyle.CreatePageNumberOptions();
            PDFPageNumberGroup   grp  = null;

            if (null != opts && opts.HasPageNumbering)
            {
                grp = context.DocumentLayout.Numbers.PushPageNumber(opts);
            }


            foreach (PageBase pg in this._group.Pages)
            {
                if (pg.Visible)
                {
                    this.LayoutAPage(pg, first);
                    first = false;
                }

                if (!this.ContinueLayout)
                {
                    break;
                }
            }

            if (null != opts && opts.HasPageNumbering)
            {
                context.DocumentLayout.Numbers.PopNumberStyle(grp);
            }
        }
        /// <summary>
        /// Registers the current page numbering options for the specified page at the specified index
        /// </summary>
        /// <param name="pageindex"></param>
        /// <param name="page"></param>
        /// <param name="num"></param>
        public PDFPageNumberGroup RegisterPageNumbering(int pageIndex, PDFPageNumberOptions options)
        {
            PDFPageNumberGroup grp = this.Numbers.PushPageNumber(options);

            this.Numbers.Register(pageIndex);
            return(grp);
        }
        protected virtual void RegisterPageNumbering(PDFLayoutPage page, PDFPageNumberOptions options)
        {
            this._numbergroup = this.DocumentLayout.RegisterPageNumbering(page, options);
            _firstpageIndex   = page.PageIndex;

            if (this.Context.ShouldLogDebug)
            {
                this.Context.TraceLog.Add(TraceLevel.Debug, LayoutEnginePage.LOG_CATEGORY, "Registered the page numbering");
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        public void PageCollection_DefaultAndBack()
        {
            // 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[] { "1", "2", "3", "4", "5", "i", "ii", "iii", "iv", "v", "B", "C", "D", "E", "F", "6", "7", "8", "9", "10" };

            PDFPageNumbers col = new PDFPageNumbers();
            Style          def = new Style();

            def.PageStyle.NumberStyle      = PageNumberStyle.Decimals;
            def.PageStyle.NumberStartIndex = 1;
            col.StartNumbering(def.CreatePageNumberOptions());

            Style lowRoman = new Style();

            lowRoman.PageStyle.NumberStyle      = PageNumberStyle.LowercaseRoman;
            lowRoman.PageStyle.NumberStartIndex = 1;


            Style alpha = new Style();

            alpha.PageStyle.NumberStyle      = PageNumberStyle.UppercaseLetters;
            alpha.PageStyle.NumberStartIndex = 2;

            col.Register(0);
            col.Register(1);
            col.Register(2);
            col.Register(3);
            col.Register(4);

            PDFPageNumberGroup grp = col.PushPageNumber(lowRoman.CreatePageNumberOptions());

            col.Register(5);
            col.Register(6);
            col.Register(7);
            col.Register(8);
            col.Register(9);
            col.UnRegister(9);
            col.PopNumberStyle(grp);

            grp = col.PushPageNumber(alpha.CreatePageNumberOptions());
            col.Register(10);
            col.Register(11);
            col.Register(12);
            col.Register(13);
            col.Register(14);
            col.UnRegister(14);
            col.PopNumberStyle(grp);

            col.Register(15);
            col.Register(16);
            col.Register(17);
            col.Register(18);
            col.Register(19);
            col.UnRegister(19);
            col.EndNumbering();

            for (int i = 0; i < 20; i++)
            {
                string lbl = col.GetPageLabel(i);
                Assert.AreEqual(expectedlabels[i], lbl);
            }
        }
Exemplo n.º 6
0
        public void PageRegistrations()
        {
            PDFPageNumberGroup        grp = new PDFPageNumberGroup(null, "", PageNumberStyle.Decimals, 1);
            PDFPageNumberRegistration reg = new PDFPageNumberRegistration(0, 10, grp);

            for (int i = 0; i < 10; i++)
            {
                string pg = (i + 1).ToString();
                Assert.AreEqual(pg, reg.GetPageLabel(i), "Block 1: Page index " + i + " does not match " + pg);
            }


            grp = new PDFPageNumberGroup(null, "", PageNumberStyle.LowercaseLetters, 1);
            reg = new PDFPageNumberRegistration(0, 10, grp);

            for (int i = 0; i < 10; i++)
            {
                char value = 'a';
                value = (char)((int)value + i);
                string pg = value.ToString();

                Assert.AreEqual(pg, reg.GetPageLabel(i), "Block 2: Page index " + i + " does not match " + pg);
            }

            grp = new PDFPageNumberGroup(null, "", PageNumberStyle.Decimals, 1);
            reg = new PDFPageNumberRegistration(0, 10, grp);
            reg.PreviousLinkedRegistrationPageCount = 5;

            for (int i = 0; i < 10; i++)
            {
                string pg = (i + 1 + 5).ToString();
                Assert.AreEqual(pg, reg.GetPageLabel(i));
            }

            grp = new PDFPageNumberGroup(null, "", PageNumberStyle.LowercaseLetters, 1);
            reg = new PDFPageNumberRegistration(0, 10, grp);
            reg.PreviousLinkedRegistrationPageCount = 6;

            for (int i = 0; i < 10; i++)
            {
                char value = 'a';
                value = (char)((int)value + i + 6);
                string pg = value.ToString();

                Assert.AreEqual(pg, reg.GetPageLabel(i), "Block 3: Page index " + i + " does not match " + pg);
            }

            // A registration of UpperCase letter from pg 15 to 25
            // with a previous count of 6 pages
            grp = new PDFPageNumberGroup(null, "", PageNumberStyle.UppercaseLetters, 1);
            reg = new PDFPageNumberRegistration(15, 25, grp);
            reg.PreviousLinkedRegistrationPageCount = 6;

            for (int i = 0; i < 10; i++)
            {
                char value = 'A';
                value = (char)((int)value + i + 6);
                string pg = value.ToString();

                Assert.AreEqual(pg, reg.GetPageLabel(i + 15), "Block 4: Page index " + i + " does not match " + pg);
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="currentPageIndex"></param>
 /// <param name="page"></param>
 /// <param name="numbering"></param>
 public void UnRegisterPageNumbering(int pageIndex, PDFPageNumberGroup group)
 {
     this.Numbers.UnRegister(pageIndex);
     this.Numbers.PopNumberStyle(group);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="currentPageIndex"></param>
 /// <param name="page"></param>
 /// <param name="numbering"></param>
 public void UnRegisterPageNumbering(PDFLayoutPage page, PDFPageNumberGroup group)
 {
     this.Numbers.UnRegister(page.PageIndex);
     this.Numbers.PopNumberStyle(group);
 }