2016-12-05 8 views
1

Я использую 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+w[email protected]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+wer[email protected]34gh+23rg-4s544"); 
+0

как вы добавляете текст в таблицу? 'Абзац'? 'FormattedText'? 'TextFrame'? –

+0

Является ли это реальным кодом типа слова или будут ли пробелы и дефисы при использовании реальных данных? –

+0

@MongZhu Я добавляю текст, используя Paragraph- также обновленный фрагмент в вопросе – Ashutosh

ответ

3

MigraDoc автоматически разбивает строки на пробел, дефис и мягких дефисов.

У вас есть длинный текст без пробелов и без дефиса. Простое решение: вставьте мягкие дефисы, где вы хотите разрешить разрывы строк (например, мягкий дефис после каждого знака «+»).

+0

Да, это данные реального мира, можете ли вы объяснить немного больше, как мы можем вставлять, а затем удалять эти мягкие дефисы после упаковки? – Ashutosh

+0

Я сам изучил материал с мягким дефисом, а также разместил мое решение ниже, спасибо за указание в правильном направлении. – Ashutosh

1

Поскольку Migradoc имеет ограничение на разрыв линий только в пространствах, дефисах и мягких дефисах, я вставил space после каждых 45 символов (ваш выбор по ширине столбца), и, следовательно, значение обернуто надлежащим образом без какого-либо эффекта показанного вывода (нет дополнительных символов видимых)

Код сниппетов -

String myString = "acs800-07-1234a-5+asdf+asdf+qwer+wer[email protected]34gh+23rg-4s544"; 

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

ВЫВОД enter image description here