计算iText 7中表格的宽度

时间:2019-02-18 12:20:46

标签: java html itext7

我将iText 7html2pdf 2.1.2版本一起使用,并尝试将HTML文件转换为PDF。

我使用HtmlConverter#convertToElements处理html文件。然后,我想计算其中一个元素(尤其是表格)的宽度。

我尝试实现自定义TagWorker类,但是只有在表被填满后才能获得表。

也尝试了convertToDocument和其他方法,但没有成功。

是否可以在运行时获取表格宽度?

谢谢。

1 个答案:

答案 0 :(得分:0)

坏消息:一般来说,在放置桌子之前,不可能获得桌子的实际宽度。高度取决于布局区域。

好消息:人们可以模拟桌子的布局并检查占用的位置:

    Rectangle area = new Rectangle(0, 0, 500, 500);
    LayoutResult result = table.createRendererSubTree().setParent(doc.getRenderer()).layout(new LayoutContext(new LayoutArea(0, area)));
    Rectangle tableArea = result.getOccupiedArea().getBBox();

在上面的代码中,我为表(createRendererSubTree()创建了一个渲染器,设置了它的父表(setParent(doc.getRenderer())-此行对于正确的属性处理很重要),并对其进行了布局({{ 1}};

UPD:我已经阅读了您的第一个问题,并为您提供了另一个解决方案。 假设您没有要放置的任何区域,但想查看表可以占用多少空间。

然后使用下一个代码段

layout(new LayoutContext(new LayoutArea(0, area)))

在上面的代码中,我计算了表格的最小和最大宽度。