【问题标题】:Column text overflowing out of column width列文本溢出列宽
【发布时间】:2016-12-05 11:35:28
【问题描述】:

我正在使用 Migradoc 生成一个表并为几列填充一些动态数据,我在定义表结构时定义了列宽-

Table table = new Table();
Column column = table.AddColumn(Unit.FromCentimeter(6));
column.Format.Alignment = ParagraphAlignment.Left;
table.AddColumn(Unit.FromCentimeter(6));
table.AddColumn(Unit.FromCentimeter(8));

现在第三列有数据 (acs800-07-1234a-5+asdf+asdf+qwer+wert+2345+rg+2345+ag+35+qwe1252rg+34tgh+24rg+253rg+23rgh+235rgh+@34gh+23rg-4s544) ,但它溢出了列并被截断到页面的右侧。它会自动换行但不正确,第二行中丢失了一些文本。见图片:

任何解决此问题的指针将不胜感激。

UPDATE-(显示如何添加表数据的片段)

Row row = table.AddRow();
Cell cell = row.Cells[0];
cell.AddParagraph("ACS880-104");
cell = row.Cells[1];
cell.AddParagraph("R1 – R10");
cell = row.Cells[2];            
cell.AddParagraph("acs800-07-1234a-5+asdf+asdf+qwer+wert+2345+rg+2345+ag+35+qwe+125+2rg+34tgh+24rg+253rg+23rgh+235rgh+@34gh+23rg-4s544");

【问题讨论】:

  • 如何将文本添加到表格中? Paragraph ? FormattedText? TextFrame ?
  • 这个是真字类型码还是使用真数据时会有空格和连字符?
  • @MongZhu 我正在使用段落添加文本-也更新了有问题的 sn-p

标签: c# pdf-generation migradoc


【解决方案1】:

由于 Migradoc 只能在空格、连字符和软连字符处换行,因此我在每 45 个字符(您根据列宽选择)后插入了space,因此该值被正确包装,而不会对显示的输出产生任何影响(没有额外的字符可见)

代码片段 -

    String myString = "acs800-07-1234a-5+asdf+asdf+qwer+wert+2345+rg+2345+ag+35+qwe+125+2rg+34tgh+24rg+253rg+23rgh+235rgh+@34gh+23rg-4s544";

    cell.AddParagraph(Regex.Replace(myString, ".{45}", "$0 "));

输出

【讨论】:

    【解决方案2】:

    MigraDoc 自动在空格、连字符和软连字符处换行。

    您的文本很长,没有空格和连字符。简单的解决方案:在您希望出现换行符的地方插入软连字符(例如,每个“+”号后的软连字符)。

    更新:从 1.50 版开始,您还可以使用零宽度非连接符来标记允许换行的位置。使用软连字符来获得带连字符的换行符,使用零宽度非连接符来获得不带连字符的换行符。

    【讨论】:

    • 是的,这是真实世界的数据,您能否再解释一下我们如何在换行后插入并删除这些软连字符?
    • 我自己探索了带有软连字符的东西,并在下面发布了我的解决方案,感谢您指出正确的方向。
    猜你喜欢
    • 2016-04-17
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 2012-01-29
    • 2022-01-23
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多