Я создаю потоковый документ, который состоит из нескольких записей. Каждая запись содержит две таблицы вверху, а затем какой-то форматированный текст, который я извлекаю из базы данных. Код, который добавляет форматированный текст, находится ниже (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))
Кто-нибудь когда-нибудь видел это?