複数のレコードで構成されるフロードキュメントを作成しています。各レコードには、上部に 2 つのテーブルが含まれており、データベースから抽出したリッチ テキストが含まれています。リッチ テキストを追加するコードを以下に示します (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
フロードキュメントは最初のレコードを正しくレンダリングしますが、後続のすべてのレコードは、最初のテーブルと 2 番目のテーブルの間で中断してレンダリングされます。最も奇妙なのは、RTF をインポートする前に 2 つのテーブルをレンダリングしていることですが、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
問題は、コレクションの最初の要素のデータに関連するものではありません。最初のレコードのレンダリングをスキップするようにレンダリングに指示すると、2 番目のレコードは正常にレンダリングされますが、残りには余分なスペースが含まれます。
注: この問題は間違いなくリッチ テキストの挿入に関連しています。(表の余白はすべて (0,0,0,0) に設定されています)
誰もこれを見たことがありますか?