PDF is a Page Description Language. Every page is an autonomous set of objects. The content is stored in one or more streams. There is no such thing as a paragraph or a table etc in a PDF. It's just a sequence of lines, shapes and glyphs drawn on a page.
When you add content to a document using the
Add() method, this content is converted into PDF syntax that is appended to the content stream of a page. As soon as the page is full, this content stream and the corresponding page dictionary are written to the output stream and flushed.
Several objects, such as fonts, the cross-reference table, Form XObjects,... are kept into memory, because they can change during the document creation process.
Take a note, that in iText 7
Document class has a constructor with
Document(PdfDocument pdfDoc, PageSize pageSize, boolean immediateFlush). This parameter is
true by default. If you donâ€™t want to write pages and page-related instructions to the
PdfDocument as soon as possible, set the
false and call
doc.flush() when it is necessary.
Click this link if you want to see how to answer this question in iText 5.