2016-03-10 5 views
1

Я поручено рефакторинг старого MigraDoc проекта написанного разработчиком, который больше не с моей компанией, и у меня возникают проблемы со следующим кусочкем коды ..MigraDoc не добавлять разрывы страниц автоматически

var Split = new String[1]; 
Split[0] = "||"; 
if (invoiceObject.Note != null) 
{ 
    var Lines = invoiceObject.Note.Split(Split, StringSplitOptions.RemoveEmptyEntries); 
    for (var i = 0; i < Lines.Count(); i++) 
    { 
     if (i > 0) 
      lineItemParagraph.AddLineBreak(); 

     lineItemParagraph.AddText("" + Lines[i].Replace(" ", " ").Replace("|", "")); 

    } 
} 

Этого работает, и он использует поля с разделителями на две трубы и разрывает их на новые линии, как ожидалось. Проблема в том, что для очень больших полей примечаний рендеринг PDF имеет только одну страницу, и текст просто бежит с страницы. (Элемент, который я тестировал, имеет достаточно данных в поле примечаний для более 20 страниц в рендеринге PDF).

Редактировать

код находится внутри текстового фрейма, определенного как это.

TextFrame lineItemFrame; 
this.lineItemFrame = section.AddTextFrame(); 
this.lineItemFrame.Height = "3.0cm"; 
this.lineItemFrame.Width = "8.0cm"; 
this.lineItemFrame.Left = "0cm"; 
this.lineItemFrame.RelativeHorizontal = RelativeHorizontal.Margin; 
this.lineItemFrame.Top = "9.0cm"; 
this.lineItemFrame.RelativeVertical = RelativeVertical.Page; 

Текстовая рамка находится внутри секции, которая определяется следующим образом. Просматривая код, кажется, что это единственный раздел в PDF. Возможно, мне нужно больше секций?

section = this.document.AddSection(); 
section.PageSetup.StartingNumber = 1;   

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

Я пропустил что-то болезненно очевидное?

+0

Я думаю, что ваш фрагмент кода пропускает важные части. Является ли текст в таблице? –

+0

Извините, я очень новичок в migradoc, поскольку это был не мой проект. Я просмотрел его, и этот код находится внутри 'TextFrame', который определен в моем отредактированном вопросе. – mituw16

+0

Текстовые рамки не переходят на следующую страницу. Обновлен мой ответ (TextFrames отсутствовали в версии 1). Если текст слишком длинный для одной страницы, то нельзя использовать один «TextFrame». Используйте абзацы или таблицы для автоматического разрыва страницы. Если вы придерживаетесь TextFrames, вам понадобится несколько TextFrames - и разделение текста зависит от вас. Я понимаю, что изменения в коде от другого разработчика могут быть трудными, но я боюсь, что нет простого решения. –

ответ

1

MigraDoc добавляет разрывы страниц автоматически - за двумя исключениями: TextFrames не прерывает, строки таблицы не прерываются. Таблицы разбиваются только на строки.

+0

Благодарим за отзыв! См. Мой отредактированный вопрос для получения дополнительной информации. – mituw16

+0

Удаление абзаца из текстового фрейма, исправленного с проблемой без перерывов на странице! Спасибо!!!! – mituw16

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