iText7:如何获得段落的真实宽度?

问题描述 投票:0回答:1

我需要知道一个段落的宽度(以点为单位),然后再添加到文档中。我在这里搜索并找到了Alexey关于段落高度的答案。所以我用宽度来做,但是没有用。无论段落有多长,都要返回矩形的宽度,我试了这个代码。

private float getRealParagraphWidth(Document doc, Paragraph paragraph) {
  // Create renderer tree
  IRenderer paragraphRenderer = paragraph.createRendererSubTree();
  // Do not forget setParent(). Set the dimensions of the viewport as needed
  LayoutResult result = paragraphRenderer.setParent(doc.getRenderer()).
        layout(new LayoutContext(new LayoutArea(1, new Rectangle(1000, 100))));
  // LayoutResult#getOccupiedArea() contains the information you need
  return result.getOccupiedArea().getBBox().getWidth();
}

所以,我的问题是,这段代码有什么问题? 如果它对高度有效,但对宽度无效?

java itext width itext7 paragraph
1个回答
0
投票

我的一个朋友解决了这个问题。代码的最后一行应该是这个。

 private float getRealParagraphWidth(Document doc, Paragraph paragraph) {
    // Create renderer tree
    IRenderer paragraphRenderer = paragraph.createRendererSubTree();
    // Do not forget setParent(). Set the dimensions of the viewport as needed
    LayoutResult result = paragraphRenderer.setParent(doc.getRenderer()).
            layout(new LayoutContext(new LayoutArea(1, new Rectangle(1000, 100))));
    // LayoutResult#getOccupiedArea() contains the information you need
    //return result.getOccupiedArea().getBBox().getWidth();
    return ((ParagraphRenderer) paragraphRenderer).getMinMaxWidth().getMaxWidth();
 }

它的结果是正确的值。

© www.soinside.com 2019 - 2024. All rights reserved.