PDF Tagged content in a FloatingBox

Hi

Found sample code to do a two column layout using FloatingBox.
Found a second sample to add a Tagged table.
Is it possible to combine the two ?

I need the tagged table added to a two column layout in a PDF/UA, but I don’t see a StructureElement FloatingBox equivalent.

Or Is there another way to accomplish this ?

Thanks

public void MakePDF()
{
    var outputFileName = this.OutFileName;



    Document document = new Document();



    // SAMPLE ONE - FLOATING BOX

    // specify the left margin info for the PDF file
    document.PageInfo.Margin.Left = 40;
    // specify the Right margin info for the PDF file
    document.PageInfo.Margin.Right = 40;
    Page page = document.Pages.Add();

    

    Aspose.Pdf.FloatingBox box = new Aspose.Pdf.FloatingBox();
    //Add four columns in the section
    box.ColumnInfo.ColumnCount = 2;
    //Set the spacing between the columns
    box.ColumnInfo.ColumnSpacing = "5";

    box.ColumnInfo.ColumnWidths = "205 205";

     Aspose.Pdf.Table table = new Aspose.Pdf.Table();
    // Set the table border color as LightGray
    table.Border = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
    // Set the border for table cells
    table.DefaultCellBorder = new Aspose.Pdf.BorderInfo(Aspose.Pdf.BorderSide.All, .5f, Aspose.Pdf.Color.FromRgb(System.Drawing.Color.LightGray));
    // Create a loop to add 10 rows
    for (int row_count = 1; row_count < 190; row_count++)
    {
        // Add row to table
        Aspose.Pdf.Row row = table.Rows.Add();
        // Add table cells
        row.Cells.Add("Column (" + row_count + ", 1)");
        row.Cells.Add("Column (" + row_count + ", 2)");
    }

    box.Paragraphs.Add(table);
    
    page.Paragraphs.Add(box);


    // SAMPLE #2 TAGGED table

    ITaggedContent taggedContent = document.TaggedContent;
    var rootElement = taggedContent.RootElement;
    // Set Title and Language for Document
    taggedContent.SetTitle("Tagged Pdf Document");
    taggedContent.SetLanguage("en-US");

    TableElement tableElement = taggedContent.CreateTableElement();
    rootElement.AppendChild(tableElement);

    tableElement.Border = new BorderInfo(BorderSide.All, 1.2F, Color.DarkBlue);

    TableTHeadElement tableTHeadElement = tableElement.CreateTHead();
    TableTBodyElement tableTBodyElement = tableElement.CreateTBody();
    TableTFootElement tableTFootElement = tableElement.CreateTFoot();
    int rowCount = 50;
    int colCount = 1;
    int rowIndex;
    int colIndex;

    TableTRElement headTrElement = tableTHeadElement.CreateTR();
    headTrElement.AlternativeText = "Head Row";

    headTrElement.BackgroundColor = Color.LightGray;

    for (colIndex = 0; colIndex < colCount; colIndex++)
    {
        TableTHElement thElement = headTrElement.CreateTH();
        thElement.SetText(String.Format("Head {0}", colIndex));

        thElement.BackgroundColor = Color.GreenYellow;
        thElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);

        thElement.IsNoBorder = true;
        thElement.Margin = new MarginInfo(16.0, 2.0, 8.0, 2.0);

        thElement.Alignment = HorizontalAlignment.Right;
    }

    for (rowIndex = 0; rowIndex < rowCount; rowIndex++)
    {
        TableTRElement trElement = tableTBodyElement.CreateTR();
        trElement.AlternativeText = String.Format("Row {0}", rowIndex);

        for (colIndex = 0; colIndex < colCount; colIndex++)
        {
            int colSpan = 1;
            int rowSpan = 1;

            if (colIndex == 1 && rowIndex == 1)
            {
                colSpan = 2;
                rowSpan = 2;
            }
            else if (colIndex == 2 && (rowIndex == 1 || rowIndex == 2))
            {
                continue;
            }
            else if (rowIndex == 2 && (colIndex == 1 || colIndex == 2))
            {
                continue;
            }

            TableTDElement tdElement = trElement.CreateTD();
            tdElement.SetText(String.Format("Cell [{0}, {1}]", rowIndex, colIndex));


            tdElement.BackgroundColor = Color.Yellow;
            tdElement.Border = new BorderInfo(BorderSide.All, 4.0F, Color.Gray);

            tdElement.IsNoBorder = false;
            tdElement.Margin = new MarginInfo(8.0, 2.0, 8.0, 2.0);

            tdElement.Alignment = HorizontalAlignment.Center;

            TextState cellTextState = new TextState();
            cellTextState.ForegroundColor = Color.DarkBlue;
            cellTextState.FontSize = 7.5F;
            cellTextState.FontStyle = FontStyles.Bold;
            cellTextState.Font = FontRepository.FindFont("Arial");
            tdElement.DefaultCellTextState = cellTextState;

            tdElement.IsWordWrapped = true;
            tdElement.VerticalAlignment = VerticalAlignment.Center;

            tdElement.ColSpan = colSpan;
            tdElement.RowSpan = rowSpan;
        }
    }

    TableTRElement footTrElement = tableTFootElement.CreateTR();
    footTrElement.AlternativeText = "Foot Row";

    footTrElement.BackgroundColor = Color.LightSeaGreen;

    for (colIndex = 0; colIndex < colCount; colIndex++)
    {
        TableTDElement tdElement = footTrElement.CreateTD();
        tdElement.SetText(String.Format("Foot {0}", colIndex));

        tdElement.Alignment = HorizontalAlignment.Center;
        tdElement.StructureTextState.FontSize = 7F;
        tdElement.StructureTextState.FontStyle = FontStyles.Bold;
    }


    StructureAttributes tableAttributes = tableElement.Attributes.GetAttributes(AttributeOwnerStandard.Table);
    StructureAttribute summaryAttribute = new StructureAttribute(AttributeKey.Summary);
    summaryAttribute.SetStringValue("The summary text for table");
    tableAttributes.SetAttribute(summaryAttribute);


    document.Save(outputFileName);
}

@itobob1

An investigation ticket as PDFNET-50326 has been logged in our issue tracking system for similar requirements that you have. We have linked the ticket ID with this forum thread so that you will receive a notification as soon as the ticket is resolved. Please be patient and spare us some time.

We are sorry for the inconvenience.