【问题标题】:Right-alignment text in PDFBOX?PDFBOX中的右对齐文本?
【发布时间】:2014-07-23 03:52:37
【问题描述】:

我需要使用 PDFBOX (java) 以右对齐方式绘制文本。

我目前正在使用 ContentStream.drawString 将文本绘制到 pdf 中。我没有使用等宽字体,所以字符的宽度会有所不同。

有什么想法吗?

【问题讨论】:

    标签: java apache pdf-generation pdfbox


    【解决方案1】:

    简单的解决方案!

    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 ?
    • 是的,抱歉,这一定是一个错误。基本上你得到字符串的(物理)长度,将光标向后移动,打印字符串,再次将光标移动到右侧。
    • 为什么要除以 1000?
    【解决方案2】:

    我的回答基于@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);

    我希望这可以帮助某人

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2012-11-16
      • 2011-09-02
      • 2012-06-09
      • 1970-01-01
      相关资源
      最近更新 更多