2014-10-30 5 views
1

У меня есть таблица с ячейкой, которая содержит текстовую рамку, содержащую таблицу. В некоторых ячейках внутри внутреннего стола я добавил абзац. Внутри абзаца я разместил текст через метод addtext, например «WordA WordB». Размер ячейки приведет к разрыву строки между «WordA» и «WordB».Множественная упаковка на одном пространстве с MigraDoc

Проблема заключается в том, что я ожидал:

WordA 
 
WordB

Что я получаю:

WordA 
 

 
WordB

Есть ли брусчатка где-нибудь, чтобы получить то, что я ожидаю, или это ошибка в рендерере?

ответ

0

Это была ошибка в пункте rederer (ParagraphRenderer.cs). На самом деле было найдено 2 ошибки. Во-первых, если текущая строка не подходит, а следующий «Текст» - пустой («»). Вторая - если текущая строка является пустой (""), и следующая строка не подходит.

Первую ошибку легко исправить, я сменил подпрограмму HandleNonFittingLine, чтобы продолжить движение до тех пор, пока она не станет текущей. Текущий ток не пустой ("").

Вторая ошибка была сложнее выяснить и исправить. Мне пришлось получить функцию Format, чтобы найти следующий лист и передать свойство Current из следующего листа в FormatElement (если следующий лист существует). Затем мне пришлось изменить функцию FormatElement, чтобы, возможно, взять второй параметр. Затем я модифицировал функцию FormatElement, возвращая FormatResult.Ignore, если текущий лист является пустым (""), а следующий лист не помещается в текущую строку с пробелом ("").

1

Я думаю, что это ошибка - ошибка, которая обычно показывает, когда слова длиннее ширины столбца.

Для типичных сценариев (короткие слова в широких колонках) эта проблема не будет отображаться. С длинными словами в узких столбцах вы иногда получаете эту ошибку. Дефисы или мягкие дефисы в длинных словах позволят MigraDoc правильно сломать слова.

Смежные вопросы