New to Telerik Document Processing? Download free 30-day trial

Generating a Table with RadFixedDocumentEditor

Version Product Author
2024.4.1106 RadPdfProcessing Desislava Yordanova

Description

When creating or editing a PDF document using RadPdfProcessing, understanding how to manage the positioning of elements is essential. To eliminate the necessity of repositioning all elements below a newly added element in the middle of the PDF file, explore the functionality offered by the RadFixedDocumentEditor to generate a PDF table.

Solution

RadPdfProcessing offers the [RadFixedDocumentEditor](/devtools/document-processing/libraries/radpdfprocessing/editing/radfixeddocumenteditor, which allows for a flow-like content management approach and allows you to insert all desired elements one after another without calculating the elements' position. We will use this approach to generate the PDF table.

This editor automates the positioning of elements, enabling you to insert content sequentially without manually calculating positions. This option might be more suitable for scenarios where manual positioning is cumbersome.

The following example demonstrates how to create a table whose result is illustrated below:

            RadFixedDocument radFixedDocument = new RadFixedDocument();
            RadFixedDocumentEditor radFixedDocumentEditor = new RadFixedDocumentEditor(radFixedDocument);

            Table table = new Table();
            table.LayoutType = Telerik.Windows.Documents.Fixed.Model.Editing.Flow.TableLayoutType.FixedWidth;

            TableRow row = table.Rows.AddTableRow();
            TableCell cell = row.Cells.AddTableCell();
            cell.Blocks.AddBlock().InsertText("Account No.");
            cell.Blocks.AddBlock().InsertText("12345678910");

            cell = row.Cells.AddTableCell();
            cell.Background = new RgbColor(255, 100, 100);
            cell.Blocks.AddBlock().InsertText("Statement Date");
            cell.Blocks.AddBlock().InsertText("November 15, 2021");

            row = table.Rows.AddTableRow();
            cell = row.Cells.AddTableCell();
            cell.Blocks.AddBlock().InsertText(" ");
            cell = row.Cells.AddTableCell();
            cell.Background = new RgbColor(255, 100, 100);

            row = table.Rows.AddTableRow();
            cell = row.Cells.AddTableCell();
            cell.Blocks.AddBlock().InsertText("Account Name");
            cell.Blocks.AddBlock().InsertText("Leslie Holden");

            cell = row.Cells.AddTableCell();
            cell.Background = new RgbColor(255, 100, 100);
            cell.Blocks.AddBlock().InsertText("Period Statement from");
            cell.Blocks.AddBlock().InsertText("November 1, 2021");;

            row = table.Rows.AddTableRow();
            cell = row.Cells.AddTableCell();
            cell.Blocks.AddBlock().InsertText(" ");
            cell = row.Cells.AddTableCell();
            cell.Background = new RgbColor(255, 100, 100);

            row = table.Rows.AddTableRow();
            cell = row.Cells.AddTableCell();
            cell.Blocks.AddBlock().InsertText("Address");
            cell.Blocks.AddBlock().InsertText("4344 Poco Mas Drive");
            cell.Blocks.AddBlock().InsertText("Dallas, FL, 33009");

            cell = row.Cells.AddTableCell();
            cell.Background = new RgbColor(255, 100, 100);
            cell.Blocks.AddBlock().InsertText("Period Statement until");
            cell.Blocks.AddBlock().InsertText("November 13, 2021");  

            radFixedDocumentEditor.InsertTable(table);

            radFixedDocumentEditor.Dispose();

            string outputFilePath = "output.pdf";
            File.Delete(outputFilePath);
            PdfFormatProvider provider = new PdfFormatProvider();
            using (Stream output = File.OpenWrite(outputFilePath))
            {
                provider.Export(radFixedDocument, output, TimeSpan.FromSeconds(10));
            }

            Process.Start(new ProcessStartInfo() { FileName = outputFilePath, UseShellExecute = true });

The observed result is illustrated below:

Table with RadFixedDocumentEditor

RadPdfProcessing offers an alternative approach with FixedContentEditor. However, it requires managing the Position at which the document elements will be drawn. Enables precise control over the element's positioning within a PDF page. It acts as a pencil, allowing content to be drawn at specific locations.