How do I set parameters back to the default value?

Tags: graphics statesave / restore statePDF syntaxiText 5

I am using absolute positioning when writing text in a PDF document using iTextSharp. It only have a single BaseFont instance for a regular font and there is no Bold version of that font. Therefore, it is not possible to set a Bold font with the setFontAndSize() method.

I read in a post that this was an alternative way to set the font to bold:

pdfContentByte.SetCharacterSpacing(1);
pdfContentByte.SetRGBColorFill(66, 00, 00);  
pdfContentByte.SetLineWidth((float)0.5);                   
pdfContentByte.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE);
That works, but creates another problem. I don't know how to set these parameters back to my old default (non-bolded font).

Posted on StackOverflow on Apr 15, 2014 by sdalby

The answer is very simple: you need to save the state before you change the rendering mode, and restore the state after you've added the text:

pdfContentByte.SaveState();
pdfContentByte.SetCharacterSpacing(1);
pdfContentByte.SetRGBColorFill(66, 00, 00);  
pdfContentByte.SetLineWidth((float)0.5);                   
pdfContentByte.SetTextRenderingMode(PdfContentByte.TEXT_RENDER_MODE_FILL_STROKE);
// add the text using the changed state
pdfContentByte.RestoreState();

The changes you make to the character spacing, color, line width and rendering mode will only be valid between the SaveState() and RestoreState() sequence.