列文本溢出列宽

Column text overflowing out of column width

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

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-(显示如何添加 table 数据的片段)

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");

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

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

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

由于 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}", "[=10=] "));

输出