在iText7中,是否有类似iText5的calculateHeights方法的方法?

清洁工

在iText5中,当我们需要“ public float computeHeights(boolean firsttime)”时,可以获取PdfPTable的高度。

但是在iText7中,如何获取当前表格的高度值(尤其是在将表格添加到其父元素之前)?

我已经测试过“ table.getHeight()”方法,但是它返回空值。而且我还发现,在一个表渲染对象中我可以获取该值,但是局限性是当表添加到其父元素中时需要触发渲染,因此时间不是我的需要。

因为有时我们需要此值进行计算才能确定“ y轴”值。

阿列克谢·萨巴(Alexey Subach)

在iText5,元件和关于他们的位置/大小信息是一个位混合在一起,允许你打电话calculateWidths一个上PdfPTable元件。

在iText7中,此功能是分开的,这为呈现/布局元素提供了不同类型的灵活性。

因此,Table实例实例的模型元素对它们的位置或大小一无所知。调用table.getHeight结果是null因为table之前没有HEIGHT设置属性。

要计算桌子高度,必须使用渲染功能。

对于模型元素,您可以获取代表此模型元素及其所有子元素的渲染器的子树,以及layout在任何给定区域中的子树要真正知道表格的高度,您需要创建一个区域,该区域将足以放置元素的全部内容。

PdfDocument pdfDoc = ...
Document doc = ...

Table table = new Table(2)
            .addCell(new Cell().add(new Paragraph("cell 1, 1")))
            .addCell(new Cell().add(new Paragraph("cell 1, 2")));
LayoutResult result = table.createRendererSubTree().setParent(doc.getRenderer()).layout(
            new LayoutContext(new LayoutArea(1, new Rectangle(0, 0, 400, 1e4f))));

System.out.println(result.getOccupiedArea().getBBox().getHeight());

上面的代码22.982422O为我打印,但是结果可能会有所不同,具体取决于元素的配置和属性。

我想指出代码的两个重要部分:

  1. 考虑到这足以放置整个桌子,我们将其1e4f作为的高度传递LayoutArea请注意,如果无法将桌子放到该高度,则结果将永远不会超过该给定高度,因此对于您的用例而言,它是不正确的(知道桌子的总高度)。因此,请确保传递足以放置整个桌子的高度。

  2. .setParent(doc.getRenderer())该部分在这里很重要,用于检索继承属性。请注意,我们没有为table元素设置很多属性,甚至没有为字体设置任何属性,但是此信息对于了解此元素将占用的区域至关重要。因此,此信息将在期间从父链继承layout您可以通过更改文档的字体:document.setFont(newFont);或字体大小:document.setFontSize(24);并观察由此产生的高度变化来进行测试

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IText7和C#中缺少GetPageN方法

来自分类Dev

Itext7 - pdfHTML - Document SetMargins 方法不起作用

来自分类Dev

iText7 目录

来自分类Dev

在IText7中创建PdfFont

来自分类Dev

在pdf文档itext7中获取所有acrosfields的可用信息

来自分类Dev

在iText7中的jar中提供字体

来自分类Dev

什么可以替代itext7中的短语?

来自分类Dev

如何在itext7中获取widthPoint

来自分类Dev

LayoutResult在Itext7中多一页

来自分类Dev

如果可能,在 iText5 中如何将 PdfTemplate 添加到 PdfStamper 中?

来自分类Dev

Android中7.1.3的iText方法

来自分类Dev

如何使用iText5在PDF的多页中显示大尺寸图像?

来自分类Dev

itext5,突出一个词组中的一个词

来自分类Dev

itext5,突出一个词组中的一个词

来自分类Dev

iText7以错误的顺序读出行

来自分类Dev

使用itext7的addind文本

来自分类Dev

iText7(.net)SignExternalSignatureContainer NullReferenceException

来自分类Dev

iText7 Java添加文本问题

来自分类Dev

iText7 - 如何设置 LoggerFactory?

来自分类Dev

iText7 无法设置日志

来自分类Dev

Itext7 pdf.version.not.valid

来自分类Dev

iText7 setRotation() 无法正常工作

来自分类Dev

iText7 图像透明度

来自分类Dev

如何使用 IText7 和 C# 在现有 PDF 中的内部链接下划线?

来自分类Dev

如何使用iText5在表格中指定行背景

来自分类Dev

itext5:非英语连字符不起作用

来自分类Dev

从itext5升级到itext5.2的问题

来自分类Dev

片段中是否有类似setResult()的方法?

来自分类Dev

ReactJS中是否有类似FindOrCreate的方法