列文本溢出列宽

问题描述 投票:2回答:2

我正在使用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),但是它溢出了列并被截断到页面的右侧。它会自动换行但不正确,第二行会丢失一些文本。见图:

enter image description here

任何指针在包装文本中修复此问题将不胜感激。

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");
c# pdf-generation migradoc
2个回答
3
投票

MigraDoc自动断开空格,连字符和软连字符的线条。

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

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


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

输出enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.