RTF to Text usando Custom Assembly no SSRS 2008 R2


Estou aqui mais uma vez para compartilhar minhas experiencias, desta vez tive que criar um CustomAssembly (DLL) para usar dentro do SSRS 2008 R2, isto normalmente é bem simples de se fazer com os tutoriais, mas se você precisa fazer algo um pouco mais complexo como refenciar a DLL Windows.Forms você já vai precisar liberar algumas coisas a mais

Segue abaixo como fiz para criar a DLL que converte RTF para Texto limpo

OBS: Usei Visual Studio 2010 (.NET 4.0) para Criar Classe em C# mas compilando como (.NET 3.5) pois é o que o SSRS aceita.

  1. Crie um projeto do tipo Class Library

image

Segue abaixo Código, marquei em vermelho as 2 partes principais:

  • a primeira é obrigatória
  • a segunda ficou sendro obrigatório com o a referecia ao Windows.Forms, pois preciso fazer “Assert”, é como se eu estivesse dando uma permissão de uso da interface.

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security;

[assembly:AllowPartiallyTrustedCallers]

namespace RTFtoText_WinComponent
{
/// <summary>
/// Classe usada no Reporting Services para limpeza de tags RTF para texto limpo
/// </summary>
public class RTFtoText
{
/// <summary>
/// Retorna texto ASCII de texto em RTF
/// </summary>
/// <param name=”TextoOriginal”>Texto origem</param>
/// <returns>Texto limpo</returns>
public static String GetTXTfromRTF(String TextoOriginal)
{
String retorno = “”;

System.Security.Permissions.UIPermission UIPermission = new System.Security.Permissions.UIPermission(System.Security.Permissions.PermissionState.Unrestricted);
UIPermission.Assert();

// Create the RichTextBox. (Requires a reference to System.Windows.Forms.dll.)
System.Windows.Forms.RichTextBox rtBox = new System.Windows.Forms.RichTextBox();
try
{
rtBox.Rtf = TextoOriginal;
retorno = rtBox.Text;
}
catch (Exception ex)
{
return TextoOriginal;
}

return retorno;

}

}

}

Não esquecer de mudar as propriedades do projeto colocando como framework 3.5

image

Compilado a DLL você precisa copiar a DLL para alguns lugares, já vi em blogs para se copiar para vários lugares inclusive o GAC. Mas é realmente necessário apenas 2 lugares

  • Business Intelligence Development Studio
    • C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies
  • Reporting Services
    • C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin

E para que o Reporting tenha permissão de usar esta DLL será necessário alterar os arquivos de configuração do Reporting

  • C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\RSPreviewPolicy.config

<CodeGroup
class=”UnionCodeGroup”
version=”1″
PermissionSetName=”FullTrust”
Name=”MyCustomAssemblyCodeGroup”
Description=”Code group forRTFtoText_WinComponent”>
<IMembershipCondition class=”UrlMembershipCondition”
version=”1″
Url=”C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies\RTFtoText_WinComponent.dll”
/>
</CodeGroup>

  • C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\rssrvpolicy.config

<CodeGroup
class=”UnionCodeGroup”
version=”1″
PermissionSetName=”FullTrust”
Name=”MyCustomAssemblyCodeGroup”
Description=”Code group forRTFtoText_WinComponent”>
<IMembershipCondition class=”UrlMembershipCondition”
version=”1″
Url=”C:\Program Files\Microsoft SQL Server\MSRS10_50.MSSQLSERVER\Reporting Services\ReportServer\bin\RTFtoText_WinComponent.dll”
/>
</CodeGroup>

No Reporting basta fazer a referencia a DLL

image

e usar na Expression

=RTFtoText_WinComponent.RTFtoText.GetTXTfromRTF(Fields!RTF.Value)

 

Esta pronto

image

Advertisements

2 thoughts on “RTF to Text usando Custom Assembly no SSRS 2008 R2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s