public void AddTable(string tableName, params string[] headers)
        {
            var table = new Table
            {
                CellSpacing     = 0,
                BorderThickness = new Thickness(0.5, 0.5, 0, 0),
                BorderBrush     = Brushes.Black
            };

            Document.Blocks.Add(table);
            Tables.Add(tableName, table);

            var lengths = ColumnLengths.ContainsKey(tableName)
                ? ColumnLengths[tableName]
                : new[] { GridLength.Auto, GridLength.Auto, new GridLength(1, GridUnitType.Star) };

            for (var i = 0; i < headers.Count(); i++)
            {
                var c = new TableColumn {
                    Width = lengths[i]
                };
                table.Columns.Add(c);
            }

            var rows = new TableRowGroup();

            table.RowGroups.Add(rows);
            rows.Rows.Add(CreateRow(headers, new[] { TextAlignment.Center }, true));
        }
 public void AddColumnLength(string tableName, params string[] values)
 {
     if (!ColumnLengths.ContainsKey(tableName))
     {
         ColumnLengths.Add(tableName, new GridLength[0]);
     }
     ColumnLengths[tableName] = values.Select(StringToGridLength).ToArray();
 }