コード例 #1
0
 /// <summary>
 /// Creates a standard Outer Table with the option of 'keeping all content together'
 /// by setting <see cref="keepContentTogether"/> to true, it will ensure the entire
 /// table rows at hand is not broken up across pages and will be treated as a single 
 /// entity.
 /// </summary>
 /// <param name="columnWidths">columnWidths</param>
 /// <param name="font">font</param>
 /// <param name="fontSize">fontSize</param>
 /// <param name="defaultPadding">defaultPadding</param>
 /// <param name="keepContentTogether">keepContentTogether</param>
 /// <param name="isNewPage">isNewPage</param>
 /// <param name="isKeptWithNext">isKeptWithNext</param>
 /// <param name="isKeptTogether">isKeptTogether</param>
 /// <param name="parentTable">parentTable</param>
 /// <returns>Outer Table</returns>
 public Generator.Table CreateOuterTable(
     string columnWidths,
     string font,
     float fontSize,
     Generator.MarginInfo defaultPadding = null,
     bool keepContentTogether = false,
     bool isNewPage = false,
     bool isKeptWithNext = false,
     bool isKeptTogether = false,
     Generator.Table parentTable = null)
 {
     // attach to parent table
     if (parentTable != null)
     {
         var row = parentTable.Rows.Add();
         var table = new Generator.Table
         {
             ColumnWidths = columnWidths,
             DefaultCellBorder = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
             Border = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
             DefaultCellPadding = defaultPadding ?? DefaultOuterPadding,
             DefaultCellTextInfo = { FontName = font, FontSize = fontSize },
             IsBroken = !keepContentTogether,
             IsFirstParagraph = isNewPage,
             IsKeptWithNext = isKeptWithNext
         };
         if (defaultPadding != null)
         {
             table.DefaultCellPadding = defaultPadding;
         }
         var cell = row.Cells.Add();
         cell.Paragraphs.Add(table);
         return table;
     }
     else
     {
         var table = new Generator.Table
         {
             ColumnWidths = columnWidths,
             DefaultCellBorder = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
             Border = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
             DefaultCellTextInfo = { FontName = font, FontSize = fontSize },
             IsBroken = !keepContentTogether,
             IsFirstParagraph = isNewPage,
             IsKeptWithNext = isKeptWithNext
         };
         if (defaultPadding != null)
         {
             table.DefaultCellPadding = defaultPadding;
         }
         Section.Paragraphs.Add(table);
         return table;
     }
 }
コード例 #2
0
        /// <summary>
        /// Creates a numbered style '1.', representation along with the <see cref="description"/> provided.
        /// </summary>
        /// <param name="description">description</param>
        /// <param name="level">level</param>
        /// <param name="parentTable">parentTable</param>
        public void CreateNumberedStyle(
            string description,
            Generator.Table parentTable,
            int level = DefaultStyleLevel)
        {
            // create heading object and add set its level
            var heading = new Generator.Heading(AsposePdf, new Section(), level)
            {
                IsAutoSequence = true,
                IsInList = true,
                TextInfo =
                {
                    FontName = Properties.Resources.ArialFont,
                    FontSize = DefaultHeadingTwoFontSize
                },
                LabelPattern = ".",
                LabelFontName = Properties.Resources.ArialFont,
                LabelFontSize = DefaultHeadingTwoFontSize,
                HeadingType = HeadingType.Arab,
            };
            var segment = new Segment(heading);
            heading.Segments.Add(segment);
            segment.Content = description;

            var headingTable = new Generator.Table
            {
                ColumnWidths = Properties.Resources.ColumnSpanFourWidth
            };
            var headingTableRow = headingTable.Rows.Add();
            var headingTableRowCell = headingTableRow.Cells.Add();
            headingTableRowCell.Paragraphs.Add(heading);

            var row = parentTable.Rows.Add();
            var cell = row.Cells.Add();
            cell.ColumnsSpan = 2;
            cell.Paragraphs.Add(headingTable);
        }
コード例 #3
0
        /// <summary>
        /// Creates a checkbox with a label attached.
        /// </summary>
        /// <param name="label">label</param>
        /// <param name="columnWidths">columnWidths</param>
        /// <param name="parentTable">parentTable</param>
        public void CreateLabelWithCheckBox(
            string label,
            string columnWidths = "",
            Generator.Table parentTable = null)
        {
            var checkbox = CreateCheckBox();
            if (parentTable != null)
            {
                var table = new Generator.Table
                {
                    ColumnWidths = !string.IsNullOrEmpty(columnWidths)
                        ? columnWidths
                        : Properties.Resources.CheckBoxColumnWidths
                };
                var row = table.Rows.Add();
                var cellOne = row.Cells.Add(label);
                cellOne.Padding = DefaultInnerPadding;
                cellOne.DefaultCellTextInfo.IsTrueTypeFontBold = true;
                cellOne.DefaultCellTextInfo.FontName = Properties.Resources.ArialFont;
                cellOne.DefaultCellTextInfo.FontSize = DefaultHeadingTwoFontSize;
                var cellTwo = row.Cells.Add();
                cellTwo.Padding = DefaultInnerPadding;
                cellTwo.DefaultCellTextInfo.IsTrueTypeFontBold = true;
                cellTwo.DefaultCellTextInfo.FontName = Properties.Resources.ArialFont;
                cellTwo.DefaultCellTextInfo.FontSize = DefaultHeadingTwoFontSize;
                cellTwo.Paragraphs.Add(checkbox);

                var parentRow = parentTable.Rows.Add();
                var parentCell = parentRow.Cells.Add();
                parentCell.Paragraphs.Add(table);
            }
        }
コード例 #4
0
        /// <summary>
        /// Creates and adds an 'Outer Table' into <see cref="parentTable"/> so the user
        /// is able to add tables within a parent table.
        /// </summary>
        /// <param name="parentTable">parentTable</param>
        /// <param name="columnWidths">columnWidths</param>
        /// <param name="font">font</param>
        /// <param name="fontSize">fontSize</param>
        /// <param name="defaultPadding">defaultPadding</param>
        /// <param name="keepContentTogether">keepContentTogether</param>
        /// <param name="isKeptTogether">isKeptTogether</param>
        /// <param name="isKeptWithNext">isKeptWithNext</param>
        /// <param name="columnSpan">columnSpan</param>
        /// <returns>inserted table</returns>
        public Generator.Table AddNestedTable(
            Generator.Table parentTable,
            string columnWidths,
            string font,
            float fontSize,
            Generator.MarginInfo defaultPadding = null,
            bool keepContentTogether = false,
            bool isKeptTogether = false,
            bool isKeptWithNext = false,
            int columnSpan = DefaultNestedColumnSpan)
        {
            var row = parentTable.Rows.Add();
            var cell = row.Cells.Add();

            cell.ColumnsSpan = columnSpan;
            var table = new Generator.Table(cell)
            {
                ColumnWidths = columnWidths,
                DefaultCellPadding = defaultPadding ?? DefaultOuterPadding,
                DefaultCellTextInfo = { FontName = font, FontSize = fontSize },
                IsBroken = !keepContentTogether,
                IsKeptTogether = isKeptTogether,
                IsKeptWithNext = isKeptWithNext
            };
            cell.Paragraphs.Add(table);
            return table;
        }
コード例 #5
0
 /// <summary>
 /// Create a standard <see cref="Generator.Table"/> from a given <see cref="row"/>.
 /// This Table will be stored in a new row and harbouring cell from
 /// <see cref="row"/>, the user must specify <see cref="columnWidths"/> 
 /// and the new table column widths will be adjusted to these values.
 /// </summary>
 /// <param name="row">row</param>
 /// <param name="columnWidths">columnWidths</param>
 /// <param name="font">font</param>
 /// <param name="fontSize">fontSize</param>
 /// <param name="parentPadding">parentPadding</param>
 /// <param name="isKeptTogether">isKeptTogether</param>
 /// <param name="isKeptWithNext">isKeptWithNext</param>
 /// <param name="keepContentTogether">keepContentTogether</param>
 /// <returns>row</returns>
 public Generator.Table AddNestedTableFromRow(
     Generator.Row row,
     string columnWidths,
     string font,
     float fontSize,
     Generator.MarginInfo parentPadding = null,
     bool isKeptTogether = false,
     bool isKeptWithNext = false,
     bool keepContentTogether = false)
 {
     var cell = row.Cells.Add();
     cell.IsNoBorder = true;
     // Set the default cell padding to parentPadding definition
     row.DefaultRowCellPadding = parentPadding ?? DefaultInnerPadding;
     var table = new Generator.Table(cell)
     {
         ColumnWidths = columnWidths,
         DefaultCellPadding = parentPadding ?? DefaultOuterPadding,
         DefaultCellTextInfo = { FontName = font, FontSize = fontSize },
         IsBroken = !keepContentTogether,
         IsKeptTogether = isKeptTogether,
         IsKeptWithNext = isKeptWithNext
     };
     cell.Paragraphs.Add(table);
     return table;
 }
コード例 #6
0
 /// <summary>
 /// Adds a blank row for formatting in a given <see cref="Section"/>.
 /// NOTE: <see cref="PdfBuilder.Section"/> is maintained in this 
 /// class internally.
 /// </summary>
 /// <param name="border">border</param>
 /// <param name="table">table</param>
 /// <param name="isShortRow">isShortRow</param>
 public void BlankRow(
     Generator.BorderSide border = Generator.BorderSide.None,
     Generator.Table table = null,
     bool isShortRow = false)
 {
     if (table == null)
     {
         table = new Generator.Table { IsFixedRowHeightContentClip = true };
         Section.Paragraphs.Add(table);
         var row = table.Rows.Add();
         row.FixedRowHeight = !isShortRow
             ? DefaultBlankRowHeight
             : ShortBlankRowHeight;
         row.Border = new Generator.BorderInfo((int)border, DefaultBorderSize);
     }
     else
     {
         // add blank row to existing table
         var row = table.Rows.Add();
         var cell = row.Cells.Add();
         var blankRowTable = new Generator.Table(cell) { IsFixedRowHeightContentClip = true };
         cell.Paragraphs.Add(blankRowTable);
         row = blankRowTable.Rows.Add();
         row.FixedRowHeight = !isShortRow
             ? DefaultBlankRowHeight
             : ShortBlankRowHeight;
         row.Border = new Generator.BorderInfo((int)border, DefaultBorderSize);
     }
 }
コード例 #7
0
 /// <summary>
 /// Adds a blank row for formatting in a given <see cref="parentCell"/>.
 /// Specify <see cref="fixedRowHeight"/> for precise formatting.
 /// </summary>
 /// <param name="parentCell">parentCell</param>
 /// <param name="fixedRowHeight">fixedRowHeight</param>
 /// <param name="isShortRow">isShortRow</param>
 /// <param name="border">border</param>
 public void BlankRow(
     Generator.Cell parentCell,
     float fixedRowHeight = 0.0f,
     bool isShortRow = false,
     Generator.BorderSide border = Generator.BorderSide.None)
 {
     var table = new Generator.Table { IsFixedRowHeightContentClip = true };
     if (fixedRowHeight > 0.0f)
     {
         var row = table.Rows.Add();
         row.FixedRowHeight = !isShortRow
             ? DefaultBlankRowTextAreaHeight
             : ShortBlankRowHeight;
         row.Border = new Generator.BorderInfo((int)border, DefaultBorderSize);
     }
     parentCell.Paragraphs.Add(table);
 }
コード例 #8
0
        /// <summary>
        /// Creates a Header and Footer <see cref="Generator.HeaderFooter"/> for the specified section at hand.
        /// </summary>
        /// <param name="section">section</param>
        /// <param name="headerText">headerText</param>
        /// <param name="footerText">footerText</param>
        public void CreateHeaderAndFooterForPdfForSection(Section section, string headerText, string footerText)
        {
            // Create a Header Section of the PDF file
            var header = new Generator.HeaderFooter(section)
            {
                // Add Distance From Edge Property to 1.27cm
                DistanceFromEdge = float.Parse(Properties.Resources.OneCm) * A4PageDistanceFromEdge,
            };

            // set Odd and Even Headers
            section.OddHeader = header;
            section.EvenHeader = header;

            // Set with column widths & default cell border of the table
            var headerTable = new Generator.Table
            {
                DefaultCellBorder = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
                ColumnWidths = section.IsLandscape
                    ? Properties.Resources.HeaderRowLandscapeColumnWidths
                    : Properties.Resources.HeaderRowPortraitColumnWidths

            };
            header.Paragraphs.Add(headerTable);

            // Create header row and cell content
            var headerRow = headerTable.Rows.Add();
            headerRow.DefaultCellTextInfo.FontName = Properties.Resources.HelveticaFont;
            headerRow.DefaultCellTextInfo.FontSize = int.Parse(Properties.Resources.HeaderFontSize);

            // Set the vertical alignment of the cell as center aligned
            var headerCell = headerRow.Cells.Add(headerText);
            headerCell.VerticalAlignment = VerticalAlignmentType.Center;
            headerCell.Alignment = AlignmentType.Center;

            //=====================================================//
            //	Footer to show Page Number
            //=====================================================//

            // Create Footer Section
            var footer = new Generator.HeaderFooter(section)
            {
                //Add Distance From Edge Property to 1.27cm
                DistanceFromEdge = float.Parse(Properties.Resources.OneCm) * A4PageDistanceFromEdge
            };

            // set Odd and Even Headers
            section.OddFooter = footer;
            section.EvenFooter = footer;

            // Add footer table
            var footerTable = new Generator.Table
            {
                DefaultCellBorder = new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
                ColumnWidths = section.IsLandscape
                    ? Properties.Resources.FooterRowLandscapeColumnWidths
                    : Properties.Resources.FooterRowPortraitColumnWidths
            };

            // Set with column widths of the table
            footer.Paragraphs.Add(footerTable);

            // Add footer row
            var footerRow = footerTable.Rows.Add();
            footerRow.DefaultCellTextInfo.FontName = Properties.Resources.HelveticaFont;
            footerRow.DefaultCellTextInfo.FontSize = int.Parse(Properties.Resources.FooterRowFontSize);

            // Add foot text
            var footerCell = footerRow.Cells.Add(footerText);
            footerCell.Alignment = AlignmentType.Left;

            // Add page number
            var pageFooterCell = footerRow.Cells.Add(string.Format("Page {0} of {1}", "$p", "$P"));
            pageFooterCell.VerticalAlignment = VerticalAlignmentType.Center;
            pageFooterCell.Alignment = AlignmentType.Right;
        }
コード例 #9
0
        /// <summary>
        /// Creates an 'Inner Table' with no header. Instead Labels and their content are displayed side by side.
        /// Labels are in 'Bold' and descriptions are in normal form.
        ///      |                    ||                |
        /// E.g. | My Label (in bold) || My Description |
        ///      |                    ||                |
        /// </summary>
        /// <param name="table">table</param>
        /// <param name="label">label</param>
        /// <param name="columnWidths">columnWidths</param>
        /// <param name="description">description</param>
        /// <param name="firstSectionText">firstSectionText</param>
        /// <param name="underlineText">underlineText</param>
        /// <param name="secondSectionText">secondSectionText</param>
        /// <param name="padding">padding</param>
        public void CreateInnerTableLabelValueRow(
            Generator.Table table,
            string columnWidths,
            string description,
            string label = "",
            string firstSectionText = "",
            string underlineText = "",
            string secondSectionText = "",
            Generator.MarginInfo padding = null)
        {
            var nestedTable = new Generator.Table
            {
                ColumnWidths = columnWidths,
                DefaultCellTextInfo =
                {
                    FontName = Properties.Resources.ArialFont,
                    FontSize = DefaultInnerBodyFontSize
                },
                DefaultCellBorder = new Generator.BorderInfo((int)Generator.BorderSide.All, DefaultBorderSize),
                DefaultCellPadding = DefaultInnerPadding,
                BackgroundColor = new Generator.Color(Properties.Resources.InnerTableColor)
            };

            // add descriptions
            var tableRow = nestedTable.Rows.Add();
            if (!string.IsNullOrEmpty(underlineText) &&
                !string.IsNullOrEmpty(firstSectionText) &&
                !string.IsNullOrEmpty(secondSectionText))
            {
                var labelSectionText = new Generator.Text(Section);
                var labelSegmentOne = new Segment(labelSectionText)
                {
                    Content = firstSectionText,
                    TextInfo =
                    {
                        FontName = Properties.Resources.ArialFont,
                        FontSize = DefaultInnerBodyFontSize
                    }
                };
                labelSegmentOne.TextInfo.IsTrueTypeFontBold = true;
                labelSectionText.Segments.Add(labelSegmentOne);

                var labelSegmentTwo = new Segment(labelSectionText)
                {
                    Content = underlineText,
                    TextInfo =
                    {
                        FontName = Properties.Resources.ArialFont,
                        FontSize = DefaultInnerBodyFontSize,
                        IsUnderline = true,
                        IsTrueTypeFontBold = true,
                    }
                };
                labelSectionText.Segments.Add(labelSegmentTwo);

                var labelSegmentThree = new Segment(labelSectionText)
                {
                    Content = secondSectionText,
                    TextInfo =
                    {
                        FontName = Properties.Resources.ArialFont,
                        FontSize = DefaultInnerBodyFontSize,
                        IsTrueTypeFontBold = true
                    }
                };
                labelSectionText.Segments.Add(labelSegmentThree);

                var tableRowCell = tableRow.Cells.Add();
                tableRowCell.Paragraphs.Add(labelSectionText);
            }
            else
            {
                var labelCell = tableRow.Cells.Add(label);
                labelCell.DefaultCellTextInfo.IsTrueTypeFontBold = true;
            }
            var descriptionCell = tableRow.Cells.Add(description);
            descriptionCell.VerticalAlignment = VerticalAlignmentType.Center;

            // add content back into parent cell
            var parentRow = table.Rows.Add();
            var parentCell = parentRow.Cells.Add();
            parentCell.ColumnsSpan = 2;
            if (padding != null)
            {
                parentCell.Padding = padding;
            }
            parentCell.Paragraphs.Add(nestedTable);
        }
コード例 #10
0
 /// <summary>
 /// Create an 'Inner Table', but ensure that it is not bound to <see cref="Section"/>.
 /// This is handy if you want to nest inner tables successively and allows the user
 /// to manipulate the table along with any other cell they wish to inject it in.
 /// </summary>
 /// <param name="columnWidths">columnWidths</param>
 /// <param name="fontName">fontName</param>
 /// <param name="fontSize">fontSize</param>
 /// <param name="borderSide">borderSide</param>
 /// <param name="alignment">alignment</param>
 /// <param name="padding">padding</param>
 /// <param name="keepContentTogether">keepContentTogether</param>
 /// <param name="isKeptWithNext">isKeptWithNext</param>
 public Generator.Table CreateSimpleInnerTable(
     string columnWidths, 
     string fontName = "", 
     float fontSize = 0,
     Generator.BorderSide borderSide = Generator.BorderSide.None, 
     AlignmentType alignment = AlignmentType.Left, 
     Generator.MarginInfo padding = null, 
     bool keepContentTogether = false, 
     bool isKeptWithNext = false)
 {
     var table = new Generator.Table
     {
         ColumnWidths = columnWidths,
         DefaultCellTextInfo =
         {
             FontSize = fontSize > 0
                 ? fontSize
                 : DefaultInnerBodyFontSize,
             FontName = !string.IsNullOrEmpty(fontName)
                 ? fontName
                 : Properties.Resources.ArialFont
         },
         Alignment = alignment,
         IsBroken = !keepContentTogether,
         IsFirstRowRepeated = true,
         IsKeptWithNext = isKeptWithNext
     };
     if (borderSide != Generator.BorderSide.None)
     {
         table.Border = new Generator.BorderInfo((int) borderSide, DefaultBorderSize);
     }
     if (padding != null)
     {
         table.DefaultCellPadding = padding;
     }
     return table;
 }
コード例 #11
0
        /// <summary>
        /// Creates & formats a nested inner table <see cref="Generator.Cell"/> to vertically align content within it.
        /// E.g. Catchment Areas (header) --> item 01
        ///                               --> item 02
        ///                               --> item 03 etc.
        /// </summary>
        /// <param name="row">row</param>
        /// <param name="descriptions">descriptions</param>
        /// <param name="fontName">fontName</param>
        /// <param name="fontSize">fontSize</param>
        /// <param name="parentPadding">parentPadding</param>
        public void CreateNestedInnerTableCell(
            Generator.Row row,
            IEnumerable<string> descriptions,
            string fontName = "",
            int fontSize = 0,
            Generator.MarginInfo parentPadding = null)
        {
            var table = new Generator.Table
            {
                DefaultCellTextInfo =
                {
                    FontName = !string.IsNullOrEmpty(fontName)
                    ? fontName
                    : Properties.Resources.ArialFont,
                    FontSize = fontSize > 0
                        ? fontSize
                        : DefaultInnerBodyFontSize
                }
            };

            // add descriptions
            foreach (var description in descriptions)
            {
                var tableRow = table.Rows.Add();
                tableRow.Cells.Add(description);
            }

            // add content back into parent cell
            var parentCell = row.Cells.Add();
            parentCell.Border = new Generator.BorderInfo((int)Generator.BorderSide.All, DefaultBorderSize);
            parentCell.Padding = parentPadding ?? DefaultInnerPadding;
            parentCell.BackgroundColor = new Generator.Color(Properties.Resources.InnerTableColor);
            parentCell.Paragraphs.Add(table);
        }
コード例 #12
0
        /// <summary>
        /// Creates a standard 'Inner Table' with respective borders.
        /// By setting <see cref="keepContentTogether"/> to true, it will ensure the entire
        /// table rows at hand is not broken up across pages and will be treated as a single 
        /// entity.
        /// The inner table that is created can be nested in another table if you specify 
        /// <see cref="parentTable"/>.
        /// </summary>
        /// <param name="resourceColumnWidths">resourceColumnWidths</param>
        /// <param name="parentTable">parentTable</param>
        /// <param name="borderSide">borderSide</param>
        /// <param name="fontName">fontName</param>
        /// <param name="fontSize">fontSize</param>
        /// <param name="alignment">alignment</param>
        /// <param name="padding">padding</param>
        /// <param name="keepContentTogether">keepContentTogether</param>
        /// <param name="isKeptWithNext">isKeptWithNext</param>
        /// <param name="isKeptTogether">isKeptTogether</param>
        /// <returns>Inner table</returns>
        public Generator.Table CreateInnerTable(
            string resourceColumnWidths,
            Generator.Table parentTable = null,
            Generator.BorderSide borderSide = Generator.BorderSide.All,
            string fontName = "",
            float fontSize = 0f,
            AlignmentType alignment = AlignmentType.Left,
            Generator.MarginInfo padding = null,
            bool keepContentTogether = false,
            bool isKeptWithNext = false,
            bool isKeptTogether = false)
        {
            Generator.Table table;
            if (parentTable != null)
            {
                var row = parentTable.Rows.Add();
                if (padding != null)
                {
                    row.DefaultRowCellPadding = padding;
                }
                var cell = row.Cells.Add();
                table = new Generator.Table(cell)
                {
                    ColumnWidths = resourceColumnWidths,
                    DefaultCellBorder = borderSide != Generator.BorderSide.None
                        ? new Generator.BorderInfo((int)borderSide, DefaultBorderSize)
                        : new Generator.BorderInfo((int)Generator.BorderSide.None),
                    DefaultCellTextInfo =
                    {
                        FontSize = fontSize > 0
                            ? fontSize
                            : DefaultInnerBodyFontSize,
                        FontName = !string.IsNullOrEmpty(fontName)
                            ? fontName
                            : Properties.Resources.ArialFont
                    },
                    Alignment = alignment,
                    IsBroken = !keepContentTogether,
                    IsFirstRowRepeated = true,
                    IsKeptWithNext = isKeptWithNext,
                    IsKeptTogether = isKeptTogether
                };
                cell.IsNoBorder = true;
                cell.Paragraphs.Add(table);
            }
            else
            {
                table = new Generator.Table
                {
                    ColumnWidths = resourceColumnWidths,
                    DefaultCellBorder = borderSide != Generator.BorderSide.None
                        ? new Generator.BorderInfo((int)borderSide, DefaultBorderSize)
                        : new Generator.BorderInfo((int)Generator.BorderSide.None, DefaultBorderSize),
                    DefaultCellTextInfo =
                    {
                        FontSize = fontSize > 0
                            ? fontSize
                            : DefaultInnerBodyFontSize,
                        FontName = !string.IsNullOrEmpty(fontName)
                            ? fontName
                            : Properties.Resources.ArialFont
                    },
                    Alignment = alignment,
                    IsBroken = !keepContentTogether,
                    IsFirstRowRepeated = true,
                    IsKeptWithNext = isKeptWithNext
                };
                if (padding != null)
                {
                    table.DefaultCellPadding = padding;
                }
                Section.Paragraphs.Add(table);
            }

            return table;
        }