How to make sure a check box is printed?

Tags: formsfield propertiesfield flagprint flagiText 5

I am new to iTextSharp, and would appreciate some help. I am creating some checkboxes, an example of the code is below:

PdfFormField checkbox1 = PdfFormField.CreateCheckBox(writer);
checkbox1.SetWidget(new Rectangle(524, 600, 540, 616),
    PdfAnnotation.HIGHLIGHT_INVERT);
checkbox1.ValueAsName = ("Off");
checkbox1.AppearanceState = ("Off");
checkbox1.FieldName = ("UsersNo");
checkbox1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "Off", chkOff);
checkbox1.SetAppearance(PdfAnnotation.APPEARANCE_NORMAL, "On", chkOn);
writer.AddAnnotation(checkbox1);
Everything looks great and is working well, until it comes to printing the PDF. When I click on File and Print, the check boxes don't show in the print preview, and also don't print.

Posted on StackOverflow on Mar 23, 2015 by user1176737

There are two ways to create a check box.

  1. There is the easy way, using the RadioCheckField class.

  2. There is the hard way, using the PdfFormField class.

For some reason you have chosen the hard way, and you are now complaining that the visibility is set to "Show on screen, not in print" instead of "Show on screen and in print".

  • The former ("Show on screen, not in print") is the default visibility setting when you create a check box the hard way. It corresponds with no flags being set.

  • The latter ("Show on screen and in print") is the default when creating a check box the easy way. In this case, the following flag is set automatically for your convenience.

As you have chosen the hard way to create a check box, you need to add the line that add the "Print flag" to your code yourself:

checkbox1.Flags = PdfAnnotation.FLAGS_PRINT;

Perfect, works a treat, many thanks for that Bruno.