iText

How to write a Zapfdingbats character at a specific location on a page?

I want to put a check mark using Zapfdingbats on a specific location in my PDF document.

What I achieved so far is this: I can show the check mark but it's on the side of the document and not on the specific X, Y coordinate that I want it to be.

Posted on StackOverflow on May 4, 2013 by Edper

Let's start with a PdfFont object that knows how to draw a Zapfdingbats character:

Java
PdfFont zapfdingbats = PdfFontFactory.createFont(FontConstants.ZAPFDINGBATS);

Once you have a PdfFont object, you can create a Paragraph:

Java
Paragraph p = new Paragraph(zapfstring).setFont(zapfdingbats);

Where zapfstring is a string containing any Zapfdingbats character you want.

To add this text at an absolute position, you can use the showTextAligned() method and PdfWriter's direct content:

Java
PdfCanvas pdfCanvas = new PdfCanvas(pdfDoc.getPage(pageNumber));
new Canvas(pdfCanvas, pdfDoc, page.getPageSize())
  .showTextAligned(p, 200, 500, pdfDoc.getPageNumber(page),
    TextAlignment.CENTER, VerticalAlignment.MIDDLE, 0);

Where 200 and 500 are an X and Y coordinate and 0 is an angle expressed in degrees. Instead of TextAlignment.CENTER, you can also choose TextAlignment.LEFTTextAlignment.RIGHT or TextAlignment.JUSTIFIED.

Click this link if you want to see how to answer this question in iText 5.