Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 计算iText 7中表格的宽度_Java_Html_Itext7 - Fatal编程技术网

Java 计算iText 7中表格的宽度

Java 计算iText 7中表格的宽度,java,html,itext7,Java,Html,Itext7,我将iText7与html2pdf2.1.2版本一起使用,并尝试将HTML文件转换为PDF 我使用HtmlConverter#convertToElements处理html文件。然后我想计算其中一个元素的宽度(特别是一个表) 我曾尝试实现定制的TagWorker类,但我只有在填充完表之后才能得到它 还尝试了convertToDocument和其他一些方法,但没有成功 有没有办法在运行时获得表宽度 提前感谢。坏消息:一般来说,在桌子被放置之前,不可能得到桌子的实际宽度。这在很大程度上取决于布局区域

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

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

我曾尝试实现定制的
TagWorker
类,但我只有在填充完表之后才能得到它

还尝试了
convertToDocument
和其他一些方法,但没有成功

有没有办法在运行时获得表宽度


提前感谢。

坏消息:一般来说,在桌子被放置之前,不可能得到桌子的实际宽度。这在很大程度上取决于布局区域

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

    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();
在上面的代码中,我为表创建了一个渲染器(
createRenderSubtree()
),设置了它的父级(
setParent(doc.getRenderer())
-这一行对于正确的属性处理很重要)并对它进行了布局(
LayoutContext(newlayoutArea(0,area)))

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

然后使用下一个代码段:

MinMaxWidth minMaxWidth = ((TableRenderer)table.createRendererSubTree().setParent(doc.getRenderer())).getMinMaxWidth();
float minWidth = minMaxWidth.getMinWidth();
float maxWidth = minMaxWidth.getMaxWidth();
在上面的代码中,我计算了表的最小宽度和最大宽度