public virtual void TestSumOfColumnsIsGreaterThan100() { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new MemoryStream())); Document doc = new Document(pdfDoc); Table table = new Table(UnitValue.CreatePercentArray(new float[] { 2, 1, 1 })); table.SetWidth(UnitValue.CreatePercentValue(80)); table.SetHorizontalAlignment(HorizontalAlignment.CENTER); Cell c1 = new Cell(1, 3); c1.SetProperty(Property.WIDTH, UnitValue.CreatePercentValue(200)); c1.Add(new Paragraph("Cell with colspan 3")); table.AddCell(c1); table.AddCell(new Cell(2, 1).Add(new Paragraph("Cell with rowspan 2"))); table.AddCell(new Cell().Add(new Paragraph("row 1; cell 1")).SetMinWidth(200)); table.AddCell(new Cell().Add(new Paragraph("row 1; cell 2")).SetMaxWidth(50)); table.AddCell("row 2; cell 1"); table.AddCell("row 2; cell 2"); TableRenderer tableRenderer = new TableRenderer(table); CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), null, null }; CellRenderer[] row2 = new CellRenderer[] { null, new CellRenderer(table.GetCell(1, 1)), new CellRenderer(table .GetCell(1, 2)) }; CellRenderer[] row3 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell (2, 1)), new CellRenderer(table.GetCell(2, 2)) }; tableRenderer.rows[0] = row1; tableRenderer.rows[1] = row2; tableRenderer.rows[2] = row3; table.SetBorder(new SolidBorder(ColorConstants.GREEN, 5)); tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer .GetBorders()); TableWidths tableWidths = new TableWidths(tableRenderer, 150, true, 15, 15); IList <TableWidths.CellInfo> cells = tableWidths.AutoLayoutCustom(); foreach (TableWidths.CellInfo cell in cells) { tableWidths.ProcessCell(cell); } doc.Add(table); doc.Close(); }
public virtual void TestProcessCellsWithPercentWidth01() { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new MemoryStream())); Document doc = new Document(pdfDoc); doc.Add(new Paragraph("With 2 columns:")); Table table = new Table(UnitValue.CreatePercentArray(2)).UseAllAvailableWidth(); table.SetMarginTop(5); for (int i = 0; i < 4; i++) { Cell cell = new Cell().Add(new Paragraph("smth" + i)); cell.SetProperty(Property.WIDTH, UnitValue.CreatePercentValue(50)); table.AddCell(cell); } TableRenderer tableRenderer = new TableRenderer(table); CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), new CellRenderer(table.GetCell (0, 1)) }; CellRenderer[] row2 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell (1, 1)) }; tableRenderer.rows[0] = row1; tableRenderer.rows[1] = row2; table.SetBorder(new SolidBorder(ColorConstants.GREEN, 5)); tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer .GetBorders()); TableWidths tableWidths = new TableWidths(tableRenderer, 150, true, 15, 15); IList <TableWidths.CellInfo> cells = tableWidths.AutoLayoutCustom(); foreach (TableWidths.CellInfo cell in cells) { tableWidths.ProcessCell(cell); } tableWidths.Recalculate(25); doc.Close(); }
private TableRenderer CreateTableRendererWithDiffColspan(int maxWidth) { Table table = CreateTableWithDiffColspan(maxWidth); TableRenderer tableRenderer = new TableRenderer(table); CellRenderer[] row1 = new CellRenderer[] { new CellRenderer(table.GetCell(0, 0)), null, null }; CellRenderer[] row2 = new CellRenderer[] { null, new CellRenderer(table.GetCell(1, 1)), new CellRenderer(table .GetCell(1, 2)) }; CellRenderer[] row3 = new CellRenderer[] { new CellRenderer(table.GetCell(1, 0)), new CellRenderer(table.GetCell (2, 1)), new CellRenderer(table.GetCell(2, 2)) }; tableRenderer.rows[0] = row1; tableRenderer.rows[1] = row2; tableRenderer.rows[2] = row3; tableRenderer.bordersHandler = new SeparatedTableBorders(tableRenderer.rows, table.GetNumberOfColumns(), tableRenderer .GetBorders()); return(tableRenderer); }
public virtual void CalculateColumnWidthsNotPointValue() { PdfDocument pdfDoc = new PdfDocument(new PdfWriter(new ByteArrayOutputStream())); Document doc = new Document(pdfDoc); Rectangle layoutBox = new Rectangle(0, 0, 1000, 100); Table table = new Table(UnitValue.CreatePercentArray(new float[] { 10, 10, 80 })); // Set margins and paddings in percents, which is not expected table.SetProperty(Property.MARGIN_RIGHT, UnitValue.CreatePercentValue(7)); table.SetProperty(Property.MARGIN_LEFT, UnitValue.CreatePercentValue(7)); table.SetProperty(Property.PADDING_RIGHT, UnitValue.CreatePercentValue(7)); table.SetProperty(Property.PADDING_LEFT, UnitValue.CreatePercentValue(7)); // Fill the table somehow. The layout area is wide enough to calculate the widths as expected for (int i = 0; i < 3; i++) { table.AddCell("Hello"); } // Create a TableRenderer, the instance of which will be used to test the application of margins and paddings TableRenderer tableRenderer = (TableRenderer)table.CreateRendererSubTree().SetParent(doc.GetRenderer()); tableRenderer.bordersHandler = (TableBorders) new SeparatedTableBorders(tableRenderer.rows, 3, tableRenderer .GetBorders(), 0); tableRenderer.ApplyMarginsAndPaddingsAndCalculateColumnWidths(layoutBox); // Specify that the render is not original in order not to recalculate the column widths tableRenderer.isOriginalNonSplitRenderer = false; MinMaxWidth minMaxWidth = tableRenderer.GetMinMaxWidth(); // TODO DEVSIX-3676: currently margins and paddings are still applied as if they are in points. After the mentioned ticket is fixed, the expected values should be updated. NUnit.Framework.Assert.AreEqual(minMaxWidth.GetMaxWidth(), 332.46f, 0.001); NUnit.Framework.Assert.AreEqual(minMaxWidth.GetMinWidth(), 332.46f, 0.001); }