【问题标题】:Calculate the width of a table in iText 7在 iText 7 中计算表格的宽度
【发布时间】:2019-02-18 12:20:45
【问题描述】:

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

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

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

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

有没有办法在运行时获取表格宽度?

提前致谢。

【问题讨论】:

    标签: java html itext7


    【解决方案1】:

    坏消息:一般情况下,在放置表格之前,无法获得表格的实际宽度。这很大程度上取决于布局区域。

    好消息:可以模拟桌子的布局并检查占用的地方:

        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()) - 此行对于正确的属性处理很重要) 并对其进行布局 (layout(new LayoutContext(new LayoutArea(0, area)));

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

    然后使用下一个sn-p:

    MinMaxWidth minMaxWidth = ((TableRenderer)table.createRendererSubTree().setParent(doc.getRenderer())).getMinMaxWidth();
    float minWidth = minMaxWidth.getMinWidth();
    float maxWidth = minMaxWidth.getMaxWidth();
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-13
      • 2012-12-18
      相关资源
      最近更新 更多