Usuário com melhor resposta
Como imprimir campo RTF?

Pergunta
-
Respostas
-
Bom dia Alexsandre,
O RS não possui uma funcionalidade para interpretar código RTF vindo do banco. Se você tiver interesse em mostrar o texto, você teria que usar uma função customizada (no banco, ou no relatório) para remover as tags RTF antes de mostrar no relatório.
Uma alternativa é usar uma assembly que faça essa conversão para você (ou um Custom Report Item). Esse blog descreve como você poderia conseguir esse resultado. Infelizmente não é algo tão simples de ser feito.
http://binaryworld.net/Main/CodeDetail.aspx?CodeId=4049&atlanta=software%20development
Att
Boreki
Todas as Respostas
-
Bom dia Alexsandre,
O RS não possui uma funcionalidade para interpretar código RTF vindo do banco. Se você tiver interesse em mostrar o texto, você teria que usar uma função customizada (no banco, ou no relatório) para remover as tags RTF antes de mostrar no relatório.
Uma alternativa é usar uma assembly que faça essa conversão para você (ou um Custom Report Item). Esse blog descreve como você poderia conseguir esse resultado. Infelizmente não é algo tão simples de ser feito.
http://binaryworld.net/Main/CodeDetail.aspx?CodeId=4049&atlanta=software%20development
Att
Boreki
-
Alexandre,
Realmente o Reporting Services, não tem este suporte a RTF, mas uma solução seria fazer o processo importação do conteúdo deste RTF para um campo texto dentro do SQL Server e acessar este campo dentro do RS fazendo a impressão dos dados.
-
Também não encontrei nada na internet, resolvi fazer uma função em VB... Espero ter ajudado
Code SnippetPublic Shared Function RtfToString(ByVal TextoOriginal As String) As String
Try
Dim texto As String = TextoOriginal
If TextoOriginal <> "" Then
Dim i As Integer
Dim palavra As String
Dim tchr As Char
For i = 0 To texto.Length
If i + 3 <= texto.Length Then
If texto(i) = "\" And texto(i + 1) = "'" Then
palavra = "&H" + texto(i + 2) + texto(i + 3)
tchr = Chr(palavra)
palavra = "\'" + texto(i + 2) + texto(i + 3)
texto = texto.Replace(palavra, tchr)
End If
End If
Next'Remove chaves
texto = texto.Substring(texto.IndexOf("{") + 1)
texto = texto.Substring(0, texto.LastIndexOf("}"))'Remove "\par"
texto = texto.Replace("\par", "")
texto = texto.Replace("\tab", "")'Remove ENTERs
'texto = texto.Replace(Chr(13) + Chr(10), "")'Remove Texto entre chaves
While texto.Contains("{") = True And texto.Contains("}") = True
texto = texto.Remove(texto.IndexOf("{"), texto.LastIndexOf("}") - texto.IndexOf("{") + 1)
End While
'Limpa tags RTF
Const CaracterTemporario As String = Chr(1)
texto = texto.Replace("\\", CaracterTemporario)While texto.Contains("\") = True
Dim IndexBarra As Integer = texto.IndexOf("\") - 1
If IndexBarra < 0 Then
IndexBarra = 0
End If
Dim IndexEspaco As Integer = texto.IndexOf(" ") + 1
texto = texto.Remove(IndexBarra, IndexEspaco - IndexBarra)
End Whiletexto = texto.Replace(CaracterTemporario, "\")
'Retorna Texto
texto = RTrim(LTrim(texto))Return texto
Else
Return ""
End If
Catch ex As Exception
Return "Error - RtfToString::" + ex.Message
End Try
End Function