【发布时间】:2014-07-23 03:52:37
【问题描述】:
我需要使用 PDFBOX (java) 以右对齐方式绘制文本。
我目前正在使用 ContentStream.drawString 将文本绘制到 pdf 中。我没有使用等宽字体,所以字符的宽度会有所不同。
有什么想法吗?
【问题讨论】:
标签: java apache pdf-generation pdfbox
我需要使用 PDFBOX (java) 以右对齐方式绘制文本。
我目前正在使用 ContentStream.drawString 将文本绘制到 pdf 中。我没有使用等宽字体,所以字符的宽度会有所不同。
有什么想法吗?
【问题讨论】:
标签: java apache pdf-generation pdfbox
简单的解决方案!
text_width = (myFont.getStringWidth(myString) / 1000.0f) * fontSize;
contentStream.moveTextPositionByAmount(-text_width, 0);
contentStream.drawString(myString);
contentStream.moveTextPositionByAmount(text_width, 0);
其中 myFont = 您正在使用的字体,fontSize 是字体的大小,myString 是您要绘制的文本行。
【讨论】:
number_width == text_width ?
我的回答基于@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);
我希望这可以帮助某人
【讨论】: