Документ Word, преобразованный в FlowDocument, имеет странную внутреннюю структуру - PullRequest
1 голос
/ 16 декабря 2011

У меня есть небольшое дополнение Word, которое копирует текущий документ или выделение через буфер обмена в WPF RichTextBox для дальнейшей обработки.Затем код перемещается по полученному FlowDocument:

TextPointer cursor = document.ContentStart;
...
cursor = cursor.GetNextContextPosition(LogicalDirection.Forward);

. Меня интересуют только курсоры с cursor.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text.Я ожидаю получить блоки, которые относятся к целым абзацам или, по крайней мере, к равномерно отформатированным диапазонам в исходном документе Word.Однако я заметил, что иногда (и для моих целей слишком часто, чтобы игнорировать это) блоки начинаются или заканчиваются в самой середине слова.Довольно часто (но не всегда) это позиция с немецким умлаутом, хотя далеко не все умлауты производят такие разрывы.

Может кто-нибудь объяснить, что здесь происходит за кулисами?Есть ли лучший способ навигации по документу?Есть ли простой способ распознать, что два соседних блока, которые я получаю таким образом (они TextRuns?), Разбивают слово на две половины и не разделяются, скажем, абзацем?

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

...