Files
QuestPDF/QuestPDF.Examples/TableExamples.cs
T
2022-01-06 19:57:21 +01:00

131 lines
5.4 KiB
C#

using System;
using System.Linq;
using NUnit.Framework;
using QuestPDF.Examples.Engine;
using QuestPDF.Fluent;
using QuestPDF.Helpers;
using QuestPDF.Infrastructure;
namespace QuestPDF.Examples
{
public class TableExamples
{
public static Random Random { get; } = new Random();
[Test]
public void Example()
{
RenderingTest
.Create()
.ProduceImages()
.PageSize(PageSizes.A4)
.ShowResults()
.Render(container =>
{
container
.Padding(25)
.Box()
.Border(2)
.Table(table =>
{
table.ColumnsDefinition(columns =>
{
columns.ConstantColumn(100);
columns.RelativeColumn();
columns.ConstantColumn(100);
columns.ConstantColumn(200);
});
table.Cell().ColumnSpan(2).Element(CreateBox("A"));
table.Cell().Element(CreateBox("B"));
table.Cell().Element(CreateBox("C"));
table.Cell().Element(CreateBox("D"));
table.Cell().RowSpan(2).Element(CreateBox("E"));
table.Cell().RowSpan(3).ColumnSpan(2).Element(CreateBox("F"));
table.Cell().RowSpan(2).Element(CreateBox("G"));
table.Cell().RowSpan(2).Element(CreateBox("H"));
table.Cell().Element(CreateBox("I"));
table.Cell().Element(CreateBox("J"));
table.Cell().RowSpan(2).Element(CreateBox("K"));
table.Cell().ColumnSpan(2).Element(CreateBox("L"));
table.Cell().Element(CreateBox("M"));
// table.Cell().Row(1).Column(1).ColumnSpan(2).Element(CreateBox("A"));
// table.Cell().Row(1).Column(3).Element(CreateBox("B"));
// table.Cell().Row(1).Column(4).Element(CreateBox("C"));
//
// table.Cell().Row(2).Column(1).Element(CreateBox("D"));
// table.Cell().Row(2).RowSpan(2).Column(2).Element(CreateBox("E"));
// table.Cell().Row(2).RowSpan(3).Column(3).ColumnSpan(2).Element(CreateBox("F"));
//
// table.Cell().Row(3).RowSpan(2).Column(1).Element(CreateBox("G"));
// table.Cell().Row(4).RowSpan(2).Column(2).Element(CreateBox("H"));
// table.Cell().Row(5).Column(3).Element(CreateBox("I"));
// table.Cell().Row(5).Column(4).Element(CreateBox("J"));
// table.Cell().Row(5).RowSpan(2).Column(1).Element(CreateBox("K"));
// table.Cell().Row(6).Column(2).ColumnSpan(2).Element(CreateBox("L"));
// table.Cell().Row(6).Column(4).Element(CreateBox("M"));
});
});
}
[Test]
public void PerformanceTest()
{
RenderingTest
.Create()
.ProducePdf()
.PageSize(1000, 2000)
.MaxPages(1000)
.ShowResults()
.Render(container =>
{
container
.Table(table =>
{
table.ColumnsDefinition(columns =>
{
foreach (var size in Enumerable.Range(0, 10))
columns.ConstantColumn(100);
});
foreach (var i in Enumerable.Range(1, 10000))
{
table
.Cell()
.RowSpan((uint)Random.Next(1, 5))
.ColumnSpan((uint)Random.Next(1, 5))
.Element(CreateBox(i.ToString()));
}
});
});
}
private Action<IContainer> CreateBox(string label)
{
return container =>
{
var height = Random.Next(2, 7) * 25;
container
.Border(1)
.Background(Placeholders.BackgroundColor())
.Layers(layers =>
{
layers
.PrimaryLayer()
.ExtendHorizontal()
.Height(height);
layers
.Layer()
.AlignCenter()
.AlignMiddle()
.Text($"{label}: {height}px");
});
};
}
}
}