flowdocument - вставка форматированного текста в конце, создание дополнительных разрывов абзаца над точкой вставки
Я создаю потоковый документ, который состоит из нескольких записей. Каждая запись содержит две таблицы вверху, а затем какой-то форматированный текст, который я извлекаю из базы данных. Код, который добавляет форматированный текст, находится ниже (cp.Comments содержит текст с тегом rtf).
Dim tr As TextRange
Dim arr() As Byte
Using ms As New System.IO.MemoryStream
arr = (New System.Text.UTF8Encoding).GetBytes(cp.Comments)
ms.Write(arr, 0, arr.Length)
ms.Seek(0, IO.SeekOrigin.Begin)
tr = New TextRange(fd.ContentEnd, fd.ContentEnd) 'add to end
tr.Load(ms, DataFormats.Rtf)
End Using
Flowdocument правильно отображает первую из записей, но все последующие записи отображаются с разрывом между первой и второй таблицей. Самое странное, что я рендерил 2 таблицы перед импортом RTF, но в любом случае RTF как-то влияет на расстояние между таблицами.
fd = new FlowDocument
for each cp in SomeCollection
fdtemp = New FlowDocument
CreateFirstTable(cp, fdtemp)
CreateSecondTable(cp, fdtemp)
AddRTF(cp, fdtemp)
FlowDocumentUtils.AddDocument(fdtemp, fd)
next
Проблема не в том, что связано с данными в первом элементе коллекции - если я скажу, что рендеринг пропускает рендеринг первой записи, тогда вторая запись отображается нормально, но остальные содержат дополнительный интервал.
Примечание: проблема определенно связана с вставкой расширенного текста - если я закомментирую вызов AddRTF, то все таблицы будут правильно отображены с разбивкой. (все поля таблицы установлены на (0,0,0,0))
Кто-нибудь когда-нибудь видел это?
1 ответ
Вы проверили решения из этого другого вопроса:
Кроме того, похоже, что у вас есть два отдельных метода:
CreateFirstTable(cp, fdtemp)
CreateSecondTable(cp, fdtemp)
Я подозреваю, что разница между тем, как работают эти два метода, заключается в том, где проблема, но зная, что они на самом деле делают, я могу только догадываться.