It is quite hard to determine whether the content has reached the lowest boundary of the page so that a new page can be added while creating the PDF on-fly. Please note that the final structure of the PDF is decided at the final stage of saving it. The content remains in the memory and correct positions and dimensions cannot be obtained unless you have already mentioned them.
For example, please check below code snippet where Document.ProcessParagraphs() method is being called in each iteration to determine the location of TextFragment on the page. Once it is known that the test has been reached to the very bottom of the page, a new page has been added:
Document doc = new Document();
Page page = doc.Pages.Add();
for(int i = 1; i <= 200; i++)
TextFragment tf = new TextFragment("Test Text" + i);
var rect = tf.Rectangle;
if (rect.URY == (page.PageInfo.Height - page.PageInfo.Margin.Bottom))
page = doc.Pages.Add();
doc.Save(dataDir + "test.pdf");
Please note that the above method would increase the processing cost as it is processing the PDF structure in each iteration. Please let us know in case you need further information.