计算iText 7中table的宽度
Calculate the width of a table in iText 7
我将 iText 7
与 html2pdf
2.1.2
版本一起使用,并尝试将 HTML 文件转换为 PDF。
我使用 HtmlConverter#convertToElements
来处理 html 文件。然后我想计算其中一个元素的宽度(特别是 table)。
我尝试实现自定义 TagWorker
class,但只有在填充后我才得到 table。
也尝试了 convertToDocument
和其他一些方法,但没有成功。
有没有办法在 运行 时获得 table 宽度?
提前致谢。
坏消息:一般来说,在 table 被放置之前不可能得到它的真实宽度。这在很大程度上取决于布局区域。
好消息:可以模拟table的布局,查看占用的地方:
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();
在上面的代码中,我为 table (createRendererSubTree()
) 创建了一个渲染器,设置了它的父级(setParent(doc.getRenderer())
- 这一行对于正确的属性处理很重要)并对其进行布局 (layout(new LayoutContext(new LayoutArea(0, area)))
;
UPD:我已经阅读了您最初的问题并为您提供了另一个解决方案。
假设您没有任何区域可以放置,但想看看 space 和 table 可以占据多少。
然后使用下一个片段:
MinMaxWidth minMaxWidth = ((TableRenderer)table.createRendererSubTree().setParent(doc.getRenderer())).getMinMaxWidth();
float minWidth = minMaxWidth.getMinWidth();
float maxWidth = minMaxWidth.getMaxWidth();
在上面的代码中,我计算了 table 的最小和最大宽度。
我将 iText 7
与 html2pdf
2.1.2
版本一起使用,并尝试将 HTML 文件转换为 PDF。
我使用 HtmlConverter#convertToElements
来处理 html 文件。然后我想计算其中一个元素的宽度(特别是 table)。
我尝试实现自定义 TagWorker
class,但只有在填充后我才得到 table。
也尝试了 convertToDocument
和其他一些方法,但没有成功。
有没有办法在 运行 时获得 table 宽度?
提前致谢。
坏消息:一般来说,在 table 被放置之前不可能得到它的真实宽度。这在很大程度上取决于布局区域。
好消息:可以模拟table的布局,查看占用的地方:
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();
在上面的代码中,我为 table (createRendererSubTree()
) 创建了一个渲染器,设置了它的父级(setParent(doc.getRenderer())
- 这一行对于正确的属性处理很重要)并对其进行布局 (layout(new LayoutContext(new LayoutArea(0, area)))
;
UPD:我已经阅读了您最初的问题并为您提供了另一个解决方案。 假设您没有任何区域可以放置,但想看看 space 和 table 可以占据多少。
然后使用下一个片段:
MinMaxWidth minMaxWidth = ((TableRenderer)table.createRendererSubTree().setParent(doc.getRenderer())).getMinMaxWidth();
float minWidth = minMaxWidth.getMinWidth();
float maxWidth = minMaxWidth.getMaxWidth();
在上面的代码中,我计算了 table 的最小和最大宽度。