如何使用 iText 剪辑 PdfPTable 中的单元格?

Posted

技术标签:

【中文标题】如何使用 iText 剪辑 PdfPTable 中的单元格?【英文标题】:How to clip the cell in a PdfPTable with iText? 【发布时间】:2013-02-10 03:45:29 【问题描述】:

我正在给定一个矩形,在一个特定的绝对位置创建一个单列 PdfPTable。在此表中,我需要添加一个 PdfPCells 集合并尽可能多地显示单元格内容,并且必须在表格矩形边界处裁剪单元格。我通过以下方式处理宽度:

    PdfPTable cutTable = new PdfPTable(1);
    cutTable.setTotalWidth(200f);
    cutTable.setLockedWidth(true);

我在每个单元格中都有一个短语对象,我将一组单元格添加到表格中。问题是单元格溢出了表格高度边界并且没有被剪裁。我尝试在添加每个单元格后跟踪总单元格的高度,但问题是由于我向表格询问行高,因此必须在之前插入一个单元格,并且我的计算因最后一个单元格溢出而关闭。

如何让表格在其边界处剪切单元格内容?如果我不能这样做,在将其添加到表格之前,如何确定单元格的高度(该短语使用 Arial 8 字体)并使用默认文本换行?

提前感谢您的帮助。

【问题讨论】:

【参考方案1】:

看看我的书“iText in Action”中的CellHeights 示例。它使用不同的选项来设置单元格的高度。我认为您需要setFixedHeight() 方法。使用此方法时,所有添加到单元格中的不适合高度的内容都会被丢弃。

【讨论】:

谢谢布鲁诺。我有你很棒的书,并多次阅读第 4 章。我正在寻找的是如何在调用 table.addCell(cell) 之前确定包含文本的单元格的高度?我有一个绝对宽度和高度的表格。我有很多行要插入的单元格,但想插入到表格矩形的边界。如果所有行都具有固定高度,则设置固定单元格高度有效。但是当单元格内有一个换行的文本时,如何在添加单元格之前确定其高度,以便最后添加的单元格不会溢出底部表格边界? 我想我不明白你想要做什么,但我知道:1.在将单元格添加到表格之前,你不能询问 iText 需要多少空间,因为该表确定单元格的大小。 2.如果你想知道内容占了多少地方,你可以使用一个ColumnText对象来检查内容。如果您使用 PdfTemplate 呈现列,则可以重用 PdfTemplate 来创建单元格。也许这是一个解决方案,但是......正如我所说:我不确定我是否理解这个问题。 我必须创建具有不同高度的多列表。问题是我已经包装了文本,当我插入单元格时,它们没有被剪裁到表格边界;因此,您可以直观地看到单元格在边界矩形上溢出/流血。在添加单元格后,我通过跟踪单元格高度来解决这个问题。如果总单元格高度大于表格高度,我删除了之前添加的单元格并停止插入单元格。这个解决方案有效,但我希望 PdfPTable,给定一个尺寸和 llx,lly,它可以为我剪裁矩形区域。谢谢。 很遗憾,我不懂这个用例,所以实现的可能性很小。

以上是关于如何使用 iText 剪辑 PdfPTable 中的单元格?的主要内容,如果未能解决你的问题,请参考以下文章

如何将过滤后的 jTable 的内容导出到 pdfpTable

如何摆脱 iText XMLWorker 中的 Helvetica?

itext导出Word的问题,能解答的有高分

itext pdf文档生成

iText:我可以在渲染期间调整表格单元格的高度吗?

iText生成PDF时 table的单元格边框怎么设置为虚线