<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog Informatico &#187; RichTextBox</title>
	<atom:link href="http://www.bloginformatico.net/tag/richtextbox/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bloginformatico.net</link>
	<description>L'informatica come non l'avete mai letta</description>
	<lastBuildDate>Sat, 08 Jan 2011 10:19:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Rich TextBox in Microsoft SQL Server Reporting Services 2005</title>
		<link>http://www.bloginformatico.net/2009/03/13/rich-textbox-in-microsoft-sql-server-reporting-services-2005/</link>
		<comments>http://www.bloginformatico.net/2009/03/13/rich-textbox-in-microsoft-sql-server-reporting-services-2005/#comments</comments>
		<pubDate>Fri, 13 Mar 2009 14:21:52 +0000</pubDate>
		<dc:creator>Massimo</dc:creator>
				<category><![CDATA[Programmazione]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[RichTextBox]]></category>
		<category><![CDATA[Rtf]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://www.bloginformatico.net/?p=159</guid>
		<description><![CDATA[Microsoft SQL Server Reporting Services 2005 (SSRS2005), il sistema di Microsoft per la reportistica e la business intelligence, soffre di una grave carenza: il componente Rich TextBox. Non è infatti possibile visualizzare all&#8217;interno di un report un testo formatto in RTF (RichTextFormat). Questo è un grosso limite della versione 2005, dato anche dal fatto che [...]]]></description>
			<content:encoded><![CDATA[<p>Microsoft SQL Server Reporting Services 2005 (SSRS2005), il sistema di Microsoft per la reportistica e la <a href="http://it.wikipedia.org/wiki/Business_intelligence">business intelligence</a>, soffre di una grave carenza: il componente Rich TextBox. Non è infatti possibile visualizzare all&#8217;interno di un report un testo formatto in <a href="http://it.wikipedia.org/wiki/Rich_Text_Format">RTF (RichTextFormat)</a>. Questo è un grosso limite della versione 2005, dato anche dal fatto che Crystal Report offre questa funzionalità sin dalle prime versioni.</p>
<p>Per fortuna l&#8217;enorme comunity di sviluppatori attorno al mondo Microsoft ci viene in aiuto. Girando tra forum e blog ho scoperto una valida soluzione a questo problema, anche se affetta da qualche piccola controindicazione. La soluzione consiste in un componente custom (una dll per intenderci) che, una volta registrato in SSRS2005, visualizza un testo Rtf come una immagine.</p>
<p>Il procedimento è molto semplice. Nell&#8217;allegato a questo articolo trovate un file RichTextImager.dll. RichTextImager è una libreria sviluppata in .Net 2.0 e all&#8217;interno dell&#8217;allegato trovate tutta la solution originale. Potete modificare la solution e ricompilarla per ottenere una versione modificata del componente. I passi da seguire sono:</p>
<ol>
<li>Copiare la dll in  <em>C:\{Cartella Programmi}\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies</em> in modo da poter utilizzare la libreria all&#8217;interno del designer.</li>
<li>Copiare la dll in  <em>C:\{Cartella Programmi}\Microsoft SQL Server\MSSQL.(n)\Reporting Services\ReportServer\bin</em> (dove N è un numero che dipende dalla vostra installazione)</li>
<li>Modificare il file <em>C:\Program Files\Microsoft SQL Server\MSSQL.(n)\Reporting Services\ReportServer\rssrvpolicy.config</em> e inserendo il testo:</li>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">&lt;CodeGroup
   class=<span style="color: #006080">"UnionCodeGroup"</span>
   version=<span style="color: #006080">"1"</span>
   PermissionSetName=<span style="color: #006080">"FullTrust"</span>
   Name=<span style="color: #006080">"RTF_Converter"</span>
   Description=<span style="color: #006080">"A special code group for my custom assembly."</span>&gt;
  &lt;IMembershipCondition
    class=<span style="color: #006080">"UrlMembershipCondition"</span>
    version=<span style="color: #006080">"1"</span>
    Url=<span style="color: #006080">"C:\{Cartella Programmi}\Microsoft SQL Server\MSSQL.(n)\
         Reporting Services\ReportServer\bin\RichTextImager.dll"</span>
  /&gt;
&lt;/CodeGroup&gt;</pre>
</div>
<li>Aprire il proprio progetto di reportistica in Microsoft Visual Studio 2005. Aprire il report su cui si vuole intervenire. Aggiungere in <strong><em>Report &gt;Report Properties &gt; References</em></strong> l&#8217;assembly RichTextImager.</li>
<li>In <strong><em>Report &gt; Report Properties &gt;Code</em></strong> aggiungere il seguente pezzo di codice:<em> </em></li>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #0000ff">Public</span> <span style="color: #0000ff">Function</span> GetRTFImage(<span style="color: #0000ff">ByVal</span> rtfText <span style="color: #0000ff">as</span> <span style="color: #0000ff">String</span>) <span style="color: #0000ff">As</span> <span style="color: #0000ff">Byte</span>()
    <span style="color: #0000ff">Dim</span> rtfConv <span style="color: #0000ff">As</span> <span style="color: #0000ff">New</span> RTFConverter()
    rtfConv.Rtf = rtfText
    <span style="color: #0000ff">return</span> RTFConverter.ConvertImageToByteArray(rtfConv.PrintToImage(500,50))
<span style="color: #0000ff">End</span> Function</pre>
</div>
<li>Aggiungere al report un&#8217;immagine e impostare la proprietà <em><strong>Source</strong> </em>a <strong><em>Database</em></strong>.</li>
<li>Impostare la proprietà dell&#8217;immagine  <em><strong>MIMEType </strong></em>a <strong><em>image/bmp</em></strong></li>
<li>Impostare la proprietà <em><strong>Value</strong></em> a <strong><em>=Code.GetRTFImage(Fields!RTFText.Value)</em></strong></li>
</ol>
<p>Ci sono ovvie controindicazioni a questo approccio e sono:</p>
<ol>
<li>Non è possibile selezionare il testo RTF perché è un&#8217;immagine e a volte l&#8217;immagine risulta sgranata.</li>
<li>Bisogna registrare una dll custom su SSRS2005 con eventuali problemi di deploy e di security.</li>
<li>Ogni report che deve visualizzare testo RTF deve referenziare un dll esterna e deve avere del codice custom al suo interno, con tutte le problematiche di manutenibilità correlate.</li>
</ol>
<p>Però come si dice in questi casi: sempre meglio che niente&#8230;</p>
<p>Allegato: <a href="http://www.bloginformatico.net/wp-content/uploads/2009/03/richtextimager.zip">richtextimager</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.bloginformatico.net/2009/03/13/rich-textbox-in-microsoft-sql-server-reporting-services-2005/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)

Served from: www.bloginformatico.net @ 2012-02-05 12:00:53 -->
