Continuiamo la trattazione di report basati sul formato RTF analizzando un semplice parser che a fronte di un semplice documento HTML well-formed genera un report RTF, mantenendo gli stili essenziali.
<%
Function HTMLtoRTF(testo)
intestazione = "{\rtf1\ansi\ansicpg1252\uc1\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1040\deflangfe1040"
' paragrafi
testo = Replace(testo, "<p>", "{", 1, -1, 1)
testo = Replace(testo, "</p>", " \par}", 1, -1, 1)
' a capo
testo = Replace(testo, "<br>", "{\par}", 1, -1, 1)
' grassetto
testo = Replace(testo, "<b>", "{\b ", 1, -1, 1)
testo = Replace(testo, "</b>", "}", 1, -1, 1)
' corsivo
testo = Replace(testo, "<i>", "{\i ", 1, -1, 1)
testo = Replace(testo, "</i>", "}", 1, -1, 1)
' sottolineato
testo = Replace(testo, "<u>", "{\ul ", 1, -1, 1)
testo = Replace(testo, "</u>", "}", 1, -1, 1)
' <h1> - continuare con tutti gli h*
testo = Replace(testo, "<h1>", "{\fs50 ", 1, -1, 1)
testo = Replace(testo, "</h1>", "\par}", 1, -1, 1)
HTMLtoRTF = intestazione & testo & "}"
End function
Response.Clear()
Response.ContentType = "text/richtext"
' imposto il nome del file
Response.AddHeader "Content-Disposition", "attachment;filename=report.rtf"
Response.Write(HtmlToRTF("<h1>Intestazione</h1><P>Prova paragrafo.</P><p>Questo è <b>bold</b>, questo <i>italic</i>, questo <br><u>sottolineato</u>.</p>"))
%>A partire da questo esempio si possono implementare le relative conversioni per tutti i tag HTML.
Le specifiche RTF sono disponibili su:
http://msdn.microsoft.com/library/en-us/dnrtfspec/html/rtfspec.asp
Per approfondimenti si veda:
#571 - Creare report RTF avanzati con dati estratti da database
http://www.aspitalia.com/liste/usag/script.aspx?ID=571
#329 - Creare report RTF
http://www.aspitalia.com/liste/usag/script.aspx?ID=329
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.








Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
