8

我正在创建一个包含多个记录的流文档。每条记录在顶部包含两个表,然后是我从数据库中提取的一些富文本。附加富文本的代码如下(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 正确呈现了第一个记录,但所有后续记录都在第一个表和第二个表之间呈现中断。最奇怪的是,我在导入 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

问题与集合的第一个元素中的数据无关 - 如果我告诉渲染跳过第一条记录的渲染,那么第二条记录渲染正常,但其余记录包含额外的间距。

注意:这个问题肯定与富文本插入有关——如果我注释掉 AddRTF 调用,那么所有的表格都会被正确地渲染在一起。(表格边距都设置为(0,0,0,0))

有没有人见过这个?

4

1 回答 1

1

您是否检查过其他问题的解决方案:

此外,您似乎有两种不同的方法:

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

我怀疑这两种方法的运行方式之间的区别在于问题出在哪里,但是在不知道它们真正在做什么的情况下,我只能推测。

于 2012-11-07T23:06:20.250 回答