Contents are not adding to PDF page

When we are adding new content to the document page, it is working fine. But when the current content reaches end of the page, adding a fresh new content should start from a new page which is not working for us. We are forced to create a new page before adding that new content.

This is a problem as the content is being generated dynamically and we don’t know how much the last content actually filled the page.

How can we fix this issue? Is there anything that we are missing?

This is how we are adding the content:

var page = document.Pages[document.Pages.Count];
page.Paragraphs.Add(content);

We are using .NET / C# and the Aspose PDF version 23.5. Please help.

@kchowdhury

To address the issue of dynamically adding content to a PDF document and ensuring that new content starts on a new page when the current page is filled, you can implement a check to determine if the content exceeds the available space on the current page. If it does, you can create a new page before adding the content.

Here’s a general approach you can follow:

  1. Check the Current Page Height: Before adding new content, check the height of the existing content on the current page.
  2. Add New Page if Necessary: If the new content does not fit on the current page, create a new page and then add the content.

Here’s a sample code snippet demonstrating this approach in C#:

using Aspose.Pdf;
using Aspose.Pdf.Text;

public class DynamicContentExample
{
    public static void AddContent(Document document, TextFragment content)
    {
        // Get the last page of the document
        Page currentPage = document.Pages[document.Pages.Count];

        // Measure the height of the existing content
        double currentHeight = currentPage.GetPageHeight();

        // Assuming you have a method to calculate the height of the new content
        double newContentHeight = CalculateContentHeight(content);

        // Check if the new content fits on the current page
        if (currentHeight + newContentHeight > currentPage.GetPageHeight())
        {
            // Create a new page if the content does not fit
            currentPage = document.Pages.Add();
        }

        // Add the content to the current page
        currentPage.Paragraphs.Add(content);
    }

    private static double CalculateContentHeight(TextFragment content)
    {
        // Implement logic to calculate the height of the content
        // This is a placeholder for your actual implementation
        return 20; // Example height
    }
}

In this example, the AddContent method checks if the new content can fit on the current page. If not, it creates a new page before adding the content. You will need to implement the CalculateContentHeight method to accurately determine the height of the content you are adding.

This approach allows you to dynamically manage content addition without manually creating new pages each time, thus streamlining your PDF generation process.

If you have further questions or need additional assistance, feel free to ask!

How can we dynamically calculate the content height? The said new content can be a text, image, or a table that we are going to add to the page.

@kchowdhury

After you add content in PDF page, you can call Document.ProcessParagraphs() method which will return updated page count. However, can you please share a minimal code sample of adding text along with sample PDF with us so that we can test the case in our environment and address it accordingly? Please also try with 24.10 version of the API before sharing the requested information.