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 ())); }
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())); }
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))); }