MigraDoc - лишние и ненужные NewLines - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть код, в котором я создаю абзац с 4 строками, в 3 из них используются вкладки для разделения меток строк и параметров.Удивительно, но код, который работал безупречно в другой форме, вызывает у меня сильную головную боль в текущей форме, хотя она практически идентична.Между строкой и параметром появляются две дополнительные строки.

    Dim ParPara As New Paragraph   ' create new paragraph
    Dim formtext As New FormattedText
    formtext.Bold = True
    formtext.AddText("ABC 12345") 
    Dim formtext2 As New FormattedText
    formtext2.Bold = True
    formtext2.AddText("163658468435831484")   
    Dim formtext3 As New FormattedText
    formtext3.Bold = True
    formtext3.AddText("PARAMETER 1")  
    ParPara.Add(formtext4)
    ParPara.AddLineBreak()     ' intentional line break at the end of line
    ParPara.AddText("Row Header 1:")
    ParPara.AddTab()
    ParPara.Add(formtext)
    ParPara.AddLineBreak()     ' intentional line break at the end of line
    ParPara.AddText("Row Header 2:")
    ParPara.AddTab()
    ParPara.Add(formtext2)
    ParPara.AddLineBreak()     ' intentional line break at the end of line
    ParPara.AddText("Row Header 3:")
    ParPara.AddTab()
    ParPara.Add(formtext3)
    ...
    TableRowHead0F.Cells(1).Add(ParPara)

Я даже сравнил содержание абзаца в памяти, и оно на 100% идентично в обеих формах, одна работает безупречно, а другая вставляет дополнительные разрывы NewLine:

enter image description here

Структура памяти правильная:

enter image description here

Стили migradoc также устанавливаются одинаково в обеих формах (работающих и неуспешных).

У кого-нибудь есть идеи, почему это происходит?

РЕДАКТИРОВАТЬ: Как и предполагалось, я сравнилMDDDL и я не вижу различий: enter image description here

Я не знаю, может ли быть какой-то контекст (стиль ячейки?), Влияющий на это, но это действительно странно.Не в первый раз я вижу что-то подобное с MigraDoc ...

EDIT 2:

Проблемы заключались в переключении порядка строк определения одного стиля,У меня была вторая строка этого кода в конце:

    Dim sStyle As Style = PruvDoc.Styles(StyleNames.Normal)
    sStyle = PruvDoc.Styles.AddStyle("Quest", "Normal")
    sStyle.ParagraphFormat.TabStops.Clear()
    sStyle.ParagraphFormat.TabStops.AddTabStop("9cm", TabAlignment.Left, TabLeader.Dots)

... и это означало, что табуляция была применена к "нормальному" стилю, а не квесту.Вопреки ожиданиям, это было определено задолго до того, как возникли проблемы (полезно знать).

1 Ответ

0 голосов
/ 06 февраля 2019

Полезный подход для исследования таких проблем: Вы можете создать файлы MDDDL для работающей версии и для версии, которая не работает, а затем сравнить файлы MDDDL.
См. Здесь:
http://pdfsharp.net/wiki/MigraDocDDL.ashx

Файлы MDDDL несколько читабельны и могут использоваться для проверки того, что вы фактически добавляете в свой документ - даже если у вас есть только версия, которая работает не так, как ожидалось.

...