14

I need to draw text in right alignment using PDFBOX (java).

I am currently using ContentStream.drawString to draw text to the pdf. I'm not using monospace font, so the width of characters varies.

Any ideas?

Mirror318
  • 11,875
  • 14
  • 64
  • 106

2 Answers2

26

Easy solution!

text_width = (myFont.getStringWidth(myString) / 1000.0f) * fontSize;
contentStream.moveTextPositionByAmount(-text_width, 0);
contentStream.drawString(myString);
contentStream.moveTextPositionByAmount(text_width, 0);

Where myFont = the font you are using, fontSize is the size of the font, and myString is the line of text you want to draw.

Manas Ranjan Sahoo
  • 1,934
  • 2
  • 12
  • 7
Mirror318
  • 11,875
  • 14
  • 64
  • 106
4

I based my answer from this of @mirror31

    float pagewidth = page.getMediaBox().getWidth();
    float text_width = (font.getStringWidth(text) / 1000.0f) * size;
    float x = pagewidth - ((paddingRight * 2) + text_width);

    contentStream.newLineAtOffset(x, 0);
    contentStream.setFont(font, size);
    contentStream.showText(text);
    contentStream.newLineAtOffset(-x, 0);

I hope this can help someone

Raph
  • 41
  • 1