using System; using System.Collections.Generic; using System.Data; using System.Reflection; using Aspose.Pdf; namespace PdfLongTableDemo { public static class PdfDemoExtensions { public static DataTable ToDataTable(this IList data) { DataTable dataTable = new DataTable(typeof(TSource).Name); PropertyInfo[] props = typeof(TSource).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in props) { dataTable.Columns.Add(prop.Name, Nullable.GetUnderlyingType(prop.PropertyType) ?? prop.PropertyType); } foreach (TSource item in data) { var values = new object[props.Length]; for (int i = 0; i < props.Length; i++) { values[i] = props[i].GetValue(item, null); } dataTable.Rows.Add(values); } return dataTable; } } //RentItem is a class for demo purposes public class RentItem { public int Id { get; set; } public string ClientName { get; set; } public string Address { get; set; } public int LeaseTerm { get; set; } public decimal MonthlyPayment { get; set; } }; class Program { static void Main(string[] args) { var rentItems = new List(); for (int i = 0; i < 1000; i++) { rentItems.Add(new RentItem { Id = i, ClientName = Faker.Name.FullName(Faker.NameFormats.Standard), Address = Faker.Address.StreetAddress(), LeaseTerm = Faker.RandomNumber.Next(100), MonthlyPayment = (Faker.RandomNumber.Next(3000) + 1000) / 10m }); } Document doc = new Document(); doc.Pages.Add(); // Initializes a new instance of the Table Table table = new Table(); // Set column widths of the table table.ColumnWidths = "30 100 120 60 100"; // Set the table border color as LightGray table.Border = new BorderInfo(BorderSide.All, .5f, Aspose.Pdf.Color.LightGray); // Set the border for table cells table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.LightGray); table.ImportDataTable(rentItems.ToDataTable(), true, 0, 0); //Repeat Header table.RepeatingRowsCount = 1; // Add table object to first page of input document doc.Pages[1].Paragraphs.Add(table); string dataDir = @"long_table_example.pdf"; // Save updated document containing table object doc.Save(dataDir); Console.WriteLine("Complete!"); } } }