public virtual void PreLayoutTest02() { String outFileName = destinationFolder + "preLayoutTest02.pdf"; String cmpFileName = sourceFolder + "cmp_preLayoutTest02.pdf"; PdfDocument pdfDoc = new PdfDocument(new PdfWriter(outFileName)); Document document = new Document(pdfDoc, PageSize.Default, false); document.Add(new Paragraph("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")); StringBuilder text = new StringBuilder(); for (int i = 0; i < 1200; i++) { text.Append("A very long text is here..."); } Paragraph twoColumnParagraph = new Paragraph(); twoColumnParagraph.SetNextRenderer(new PreLayoutTest.TwoColumnParagraphRenderer(twoColumnParagraph)); iText.Layout.Element.Text textElement = new iText.Layout.Element.Text(text.ToString()); twoColumnParagraph.Add(textElement).SetFont(PdfFontFactory.CreateFont(StandardFonts.HELVETICA)); document.Add(twoColumnParagraph); document.Add(new Paragraph("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")); int paragraphLastPageNumber = -1; IList <IRenderer> documentChildRenderers = document.GetRenderer().GetChildRenderers(); for (int i = documentChildRenderers.Count - 1; i >= 0; i--) { if (documentChildRenderers[i].GetModelElement() == twoColumnParagraph) { paragraphLastPageNumber = documentChildRenderers[i].GetOccupiedArea().GetPageNumber(); break; } } twoColumnParagraph.SetNextRenderer(new PreLayoutTest.TwoColumnParagraphRenderer(twoColumnParagraph, paragraphLastPageNumber )); document.Relayout(); //Close document. Drawing of content is happened on close document.Close(); NUnit.Framework.Assert.IsNull(new CompareTool().CompareByContent(outFileName, cmpFileName, destinationFolder , "diff")); }
public virtual void OrphansWidowsAwareAndDirectLayoutProduceSameResult() { PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new MemoryStream())); Document document = new Document(pdfDocument); int minAllowedWidows = 3; int overflowedToNextPageLinesNum = 5; Paragraph widowsParagraph = new Paragraph(OrphansWidowsTestUtil.PARA_TEXT); IRenderer paragraphRenderer = widowsParagraph.CreateRendererSubTree().SetParent(document.GetRenderer()); Rectangle effectiveArea = document.GetPageEffectiveArea(pdfDocument.GetDefaultPageSize()); float linesHeight = OrphansWidowsTestUtil.CalculateHeightForLinesNum(document, widowsParagraph, effectiveArea .GetWidth(), overflowedToNextPageLinesNum, false); Rectangle layoutAreaRect = new Rectangle(effectiveArea).SetHeight(linesHeight + OrphansWidowsTestUtil.LINES_SPACE_EPS ); LayoutContext layoutContext = new LayoutContext(new LayoutArea(1, layoutAreaRect)); LayoutResult noWidowsControlLayoutResult = paragraphRenderer.Layout(layoutContext); ParagraphWidowsControl widowsControl = new ParagraphWidowsControl(minAllowedWidows, 1, false); widowsParagraph.SetWidowsControl(widowsControl); LayoutResult widowsControlLayoutResult = paragraphRenderer.Layout(layoutContext); // toString() comparison is used since it contains report on status, areaBreak and occupiedArea NUnit.Framework.Assert.AreEqual(noWidowsControlLayoutResult.ToString(), widowsControlLayoutResult.ToString ()); ParagraphRenderer firstSplitRenderer = (ParagraphRenderer)noWidowsControlLayoutResult.GetSplitRenderer(); ParagraphRenderer secondSplitRenderer = (ParagraphRenderer)widowsControlLayoutResult.GetSplitRenderer(); NUnit.Framework.Assert.IsNotNull(firstSplitRenderer); NUnit.Framework.Assert.IsNotNull(secondSplitRenderer); NUnit.Framework.Assert.AreEqual(firstSplitRenderer.ToString(), secondSplitRenderer.ToString()); NUnit.Framework.Assert.IsNotNull(noWidowsControlLayoutResult.GetOverflowRenderer()); NUnit.Framework.Assert.IsNotNull(widowsControlLayoutResult.GetOverflowRenderer()); }