【问题标题】:How to fill remaining space of a line in iText7如何在iText7中填充一行的剩余空间
【发布时间】:2019-11-26 01:29:24
【问题描述】:

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

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

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

【问题讨论】:

标签: c# pdf itext7


【解决方案1】:

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

这是一个使用基线上的小破折号作为填充的完整示例。您可以自己实现ILineDrawer 以自定义行为或子类化/配置现有实现。代码是用 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); 

结果如下:

【讨论】:

  • 效果很好!谢谢你。希望这可以帮助更多有此类问题的人。
  • html2pdf 版本有机会得到这个吗?
  • 我使用了 CustomTagWorker,我也可以在 htmlPDF 版本中做到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-29
  • 2020-01-02
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 2018-11-11
相关资源
最近更新 更多