如何在 iText7 中填充一行的剩余 space

How to fill remaining space of a line in iText7

我正在尝试使用 iText7 和 C# 填充段落最后一行的剩余 space:

var par = new Paragraph(text);
par.Add(c);
document.Add(par);

如何添加 - 字符来填充该行留下的 space?类似于 LineSeparator(new DashedLine() 但从我段落的最后一个字符开始而不是换行。

您可以使用制表符和制表位的概念。这个概念不是特定于 iText 的。 粗略地说,您可以定义点(制表位)并添加制表符 "jump" 到下一个点。在您的情况下,制表位是行尾,您只需要一个制表符。

这是一个完整的示例,它使用基线上的小破折号作为填充。您可以自己实施 ILineDrawer 以自定义行为或 subclass/configure 现有实施。代码在 Java 中,但要将其转换为 C#,您基本上需要进行一些大写操作,仅此而已。

Document doc = ....;
Paragraph p = new Paragraph("Hello world").add(new Tab());
ILineDrawer filling = new DashedLine();
PageSize pageSize = doc.getPdfDocument().getDefaultPageSize();
Rectangle effectivePageSize = doc.getPageEffectiveArea(pageSize);
float rightTabStopPoint = effectivePageSize.getWidth();
TabStop tabStop = new TabStop(rightTabStopPoint, TabAlignment.LEFT, filling);
p.addTabStops(tabStop);
doc.add(p); 

结果如下: