protected internal override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
 {
     if (overflowResult != null && overflowResult.GetAreaBreak() != null && overflowResult.GetAreaBreak().GetAreaType
             () != AreaBreakType.NEXT_AREA)
     {
         nextAreaNumber = 0;
     }
     if (nextAreaNumber % columns.Length == 0)
     {
         base.UpdateCurrentArea(overflowResult);
     }
     return(currentArea = new RootLayoutArea(currentPageNumber, columns[nextAreaNumber++ % columns.Length].Clone
                                                 ()));
 }
Esempio n. 2
0
        protected internal override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
        {
            AreaBreak areaBreak = overflowResult != null && overflowResult.GetAreaBreak() != null?overflowResult.GetAreaBreak
                                      () : null;

            MoveToNextPage();
            while (areaBreak != null && areaBreak.GetAreaType() == AreaBreakType.LAST_PAGE && currentPageNumber < document
                   .GetPdfDocument().GetNumberOfPages())
            {
                MoveToNextPage();
            }
            PageSize customPageSize = areaBreak != null?areaBreak.GetPageSize() : null;

            while (document.GetPdfDocument().GetNumberOfPages() >= currentPageNumber && document.GetPdfDocument().GetPage
                       (currentPageNumber).IsFlushed())
            {
                currentPageNumber++;
            }
            PageSize lastPageSize = EnsureDocumentHasNPages(currentPageNumber, customPageSize);

            if (lastPageSize == null)
            {
                lastPageSize = new PageSize(document.GetPdfDocument().GetPage(currentPageNumber).GetPageSize());
            }
            return(currentArea = new LayoutArea(currentPageNumber, document.GetPageEffectiveArea(lastPageSize)));
        }
 /* (non-Javadoc)
 * @see com.itextpdf.layout.renderer.DocumentRenderer#updateCurrentArea(com.itextpdf.layout.layout.LayoutResult)
 */
 protected override LayoutArea UpdateCurrentArea(LayoutResult overflowResult) {
     AreaBreak areaBreak = overflowResult != null ? overflowResult.GetAreaBreak() : null;
     if (areaBreak is HtmlPageBreak) {
         HtmlPageBreakType htmlPageBreakType = ((HtmlPageBreak)areaBreak).GetBreakType();
         if (shouldTrimFirstBlankPagesCausedByBreakBeforeFirstElement && currentArea != null && overflowResult.GetStatus
             () == LayoutResult.NOTHING && currentArea.IsEmptyArea() && currentArea.GetPageNumber() == 1) {
             // Remove blank page that was added just to have area for elements to layout on.
             // Now we will add a page with dimensions and all the stuff that is requested by page-break-before
             document.GetPdfDocument().RemovePage(1);
             currentPageNumber = 0;
             overflowResult = null;
             currentArea = null;
             shouldTrimFirstBlankPagesCausedByBreakBeforeFirstElement = false;
             if (HtmlPageBreakType.LEFT.Equals(htmlPageBreakType) && !IsPageLeft(1) || HtmlPageBreakType.RIGHT.Equals(htmlPageBreakType
                 ) && !IsPageRight(1)) {
                 evenPagesAreLeft = !evenPagesAreLeft;
             }
         }
         // hack to change the "evenness" of the first page without adding an unnecessary blank page
         anythingAddedToCurrentArea = anythingAddedToCurrentArea || overflowResult != null && overflowResult.GetStatus
             () == LayoutResult.PARTIAL;
         if (HtmlPageBreakType.ALWAYS.Equals(htmlPageBreakType)) {
             LayoutArea nextArea = currentArea;
             if (anythingAddedToCurrentArea || currentArea == null) {
                 nextArea = base.UpdateCurrentArea(overflowResult);
             }
             anythingAddedToCurrentArea = false;
             return nextArea;
         }
         else {
             if (HtmlPageBreakType.LEFT.Equals(htmlPageBreakType)) {
                 LayoutArea nextArea = currentArea;
                 if (anythingAddedToCurrentArea || currentArea == null || !IsPageLeft(currentPageNumber)) {
                     do {
                         nextArea = base.UpdateCurrentArea(overflowResult);
                     }
                     while (!IsPageLeft(currentPageNumber));
                 }
                 anythingAddedToCurrentArea = false;
                 return nextArea;
             }
             else {
                 if (HtmlPageBreakType.RIGHT.Equals(htmlPageBreakType)) {
                     LayoutArea nextArea = currentArea;
                     if (anythingAddedToCurrentArea || currentArea == null || !IsPageRight(currentPageNumber)) {
                         do {
                             nextArea = base.UpdateCurrentArea(overflowResult);
                         }
                         while (!IsPageRight(currentPageNumber));
                     }
                     anythingAddedToCurrentArea = false;
                     return nextArea;
                 }
             }
         }
     }
     anythingAddedToCurrentArea = false;
     return base.UpdateCurrentArea(overflowResult);
 }
        public virtual void LayoutTest()
        {
            AreaBreakRenderer areaBreakRenderer = new AreaBreakRenderer(new AreaBreak());
            LayoutResult      layoutResult      = areaBreakRenderer.Layout(new LayoutContext(null));

            NUnit.Framework.Assert.AreEqual(LayoutResult.NOTHING, layoutResult.GetStatus());
            NUnit.Framework.Assert.IsNull(layoutResult.GetOccupiedArea());
            NUnit.Framework.Assert.IsNull(layoutResult.GetSplitRenderer());
            NUnit.Framework.Assert.IsNull(layoutResult.GetOverflowRenderer());
            NUnit.Framework.Assert.AreEqual(areaBreakRenderer, layoutResult.GetCauseOfNothing());
            NUnit.Framework.Assert.AreEqual(areaBreakRenderer.areaBreak, layoutResult.GetAreaBreak());
        }
 protected override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
 {
     if (overflowResult != null && overflowResult.GetAreaBreak() != null && overflowResult.GetAreaBreak().GetAreaType
             () != AreaBreakType.NEXT_AREA)
     {
         this.nextAreaNumber = 0;
     }
     if (this.nextAreaNumber % this.columns.Length == 0)
     {
         base.UpdateCurrentArea(overflowResult);
     }
     this.currentAreaNumber = this.nextAreaNumber + 1;
     return(this.currentArea = new RootLayoutArea(this.currentPageNumber, this.columns[this.nextAreaNumber++ % this
                                                                                       .columns.Length].Clone()));
 }
Esempio n. 6
0
        protected internal override LayoutArea UpdateCurrentArea(LayoutResult overflowResult)
        {
            FlushWaitingDrawingElements();
            LayoutTaggingHelper taggingHelper = this.GetProperty <LayoutTaggingHelper>(Property.TAGGING_HELPER);

            if (taggingHelper != null)
            {
                taggingHelper.ReleaseFinishedHints();
            }
            AreaBreak areaBreak = overflowResult != null && overflowResult.GetAreaBreak() != null?overflowResult.GetAreaBreak
                                      () : null;

            if (areaBreak != null && areaBreak.GetAreaType() == AreaBreakType.LAST_PAGE)
            {
                while (currentPageNumber < document.GetPdfDocument().GetNumberOfPages())
                {
                    MoveToNextPage();
                }
            }
            else
            {
                MoveToNextPage();
            }
            PageSize customPageSize = areaBreak != null?areaBreak.GetPageSize() : null;

            while (document.GetPdfDocument().GetNumberOfPages() >= currentPageNumber && document.GetPdfDocument().GetPage
                       (currentPageNumber).IsFlushed())
            {
                currentPageNumber++;
            }
            PageSize lastPageSize = EnsureDocumentHasNPages(currentPageNumber, customPageSize);

            if (lastPageSize == null)
            {
                lastPageSize = new PageSize(document.GetPdfDocument().GetPage(currentPageNumber).GetTrimBox());
            }
            return(currentArea = new RootLayoutArea(currentPageNumber, GetCurrentPageEffectiveArea(lastPageSize)));
        }