8

複数のレコードで構成されるフロードキュメントを作成しています。各レコードには、上部に 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) に設定されています)

誰もこれを見たことがありますか?

4

1 に答える 1

1

この他の質問から解決策をチェックアウトしましたか:

また、2 つの別々の方法があるようです。

CreateFirstTable(cp, fdtemp)
CreateSecondTable(cp, fdtemp)

これら 2 つの方法の動作の違いは、どこに問題があるのか​​ にあると思いますが、実際に何をしているのかわからないので、推測することしかできません。

于 2012-11-07T23:06:20.250 に答える