在 Android/Java 中使用 itext 在单元格中添加删除线

Strikethrough in cell using itext in Android/Java

我有两个数字一个在另一个上面,但第一个必须有删除线,我正在使用 table 和单元格将两个数字都放在 table 中,是否有制作我需要的东西的方法?

创建样式为 STRIKETHRU 的字体。

Font f = new Font(Font.FontFamily.HELVETICA, 12, Font.STRIKETHRU);

为了完整起见,我添加了一个额外的答案。

请看一下SimpleTable6例子:

在第一行,我们使用 STRIKETHRU 字体删除数字,Paulo 解释道:

Font font = new Font(FontFamily.HELVETICA, 12f, Font.STRIKETHRU);
table.addCell(new Phrase("0123456789", font));

在这种情况下,iText 已经为您做出了一些决定:我把线放在哪里?线有多粗?

如果您想自己做出这些决定,可以使用setUnderline()方法:

chunk1.setUnderline(1.5f, -1);
table.addCell(new Phrase(chunk1));
Chunk chunk2 = new Chunk("0123456789");
chunk2.setUnderline(1.5f, 3.5f);
table.addCell(new Phrase(chunk2));

如果您为 y 偏移参数传递负值,Chunk 将带有下划线(请参阅第一列)。您还可以使用此方法通过传递正 y 偏移量来删除文本。

如您所见,我们还定义了线条的粗细 (1.5f)。还有另一种 setUnderline() 方法也允许您传递以下参数:

  • color - 线条的颜色或 null 跟随文本颜色
  • thickness - 直线的绝对粗细
  • thicknessMul - 字体大小的粗细倍数
  • yPosition - 相对于基线的绝对 y 位置
  • yPositionMul - 位置与字体大小的乘数
  • cap - 结束线上限。允许的值为 PdfContentByte.LINE_CAP_BUTTPdfContentByte.LINE_CAP_ROUNDPdfContentByte.LINE_CAP_PROJECTING_SQUARE

http://api.itextpdf.com/itext/com/itextpdf/text/Chunk.html