When is the content flushed to a PDF File by iTextSharp?

Tags: iTextiText 7

I assumed that Document.Add() flushed content to the PDF file (the file stream) immediately, but it looks like that's not the case.

Posted on StackOverflow on Feb 18, 2014 by sameer

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.

Not sooner!

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 immediateFlush parameter: 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 immediateFlush to 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.