2011-02-01 21 views
8

Estoy creando un documento de flujo que consta de varios registros. Cada registro contiene dos tablas en la parte superior, y luego un texto enriquecido que estoy sacando de una base de datos. El código que agrega el texto enriquecido se encuentra a continuación (cp.Comentarios contiene el texto etiquetado rtf).flowdocument - insertar texto enriquecido al final crear saltos de párrafo adicionales encima del punto de inserción

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 

El FlowDocument emite la primera de los registros correctamente, pero todos los registros posteriores se representan con una pausa entre la primera y la segunda tabla. Lo que es más extraño es que estoy renderizando las 2 tablas antes de importando el RTF, pero de todos modos el RTF está afectando el espacio entre las tablas.

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 

El problema no es algo relacionado con los datos en el primer elemento de la colección - si digo la prestación saltarse la prestación del primer registro, a continuación, el segundo registro hace bien, pero el resto contiene el espacio extra.

Nota: el problema está definitivamente relacionado con la inserción de texto enriquecido: si hago un comentario de la llamada AddRTF, todas las tablas se procesan correctamente juntas. (Los márgenes de la tabla están todos configurados en (0,0,0,0))

¿Alguien ha visto esto alguna vez?

+0

¿Ha inspeccionado el texto sin formato del FlowDocument? – Paparazzi

+0

¿Terminó encontrando una solución a este problema? –

+0

Nunca lo hice, lo siento. – taglius

Respuesta

1

¿Ha revisado las soluciones de esta otra pregunta: ¿

Además, parece que usted tiene dos métodos distintos:

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

Sospecho que la La diferencia entre cómo funcionan estos dos métodos es donde está el problema, pero sin saber qué es lo que realmente están haciendo, solo puedo especular. te

Cuestiones relacionadas