怎样在报表中显示HTML/RTF内容系列之二-将HTML内容存储为RTF格式
2009-10-21 10:58
519 查看
首先声明,本系列从本节开始,没有特别说明的情况下均是以SQL Server 2005和Reporting Service 2005为基础展开的讨论。
将HTML内容存储为RTF格式,在基于.NET架构下有很多免费和付费控件可以参考,有基于JavaScript编写的,也有基于WinForm下的RichTextBox集成的。如下简单介绍几种常见的Web页面下使用的RichTextBox.
1) FreeTextBox。免费控件,官方网站是http://freetextbox.com/default.aspx ,根据官方网的介绍,FreeTextBox目前是免费的RichTextBox中使用排列在第一位的控件。很多著名的开源项目都是使用的该控件作为编辑Rich Text格式的文本的首选,例如, Community Server 和DotNetNuke,应用相当广泛。关于FreeTextBox的使用,可以参考 初试牛刀的收获-freetextbox的应用 http://www.cnblogs.com/creazygirl/archive/2006/06/19/429607.html 2) EasyRT。免费控件,官方网站是 http://www.easyui.org.cn/ ,EasyRT是基于WEB前端JavaScript框架轻量级的Rich Text文本编辑器。广泛应用于基于W3C标准的应用中。关于EasyRT的使用,可以参考官网的演示 。
3)RichTextBox for ASP.Net 1.1。免费控件,CodeProject上的开源控件,URL地址是http://www.codeproject.com/KB/aspnet/RichTextBox.aspx。简单实用,轻量级的Rich Text格式文本编辑器,可以继承到ASP.NET下的各种应用。
4) Cute Editor。付费控件,官方网站是http://cutesoft.net/ 和http://www.richtextbox.com/default.htm ,相比于前面几种免费控件而言,Cute Editor的功能更加强大,支持多种格式的转换,性能和效率也很优越。关于CuteEditor的配置可以参考cuteeditor详细设置http://blog.csdn.net/w809026418/archive/2009/09/01/4508072.aspx,关于使用可以参考官网发布的开发手册。
本文中主要使用CuteEditor6.4来实现对HTML格式的转换。前面提到,对于HTML格式的转换,主要是调用CuteEditor.dll中的CuteEditor.Convertor.RTF.HTML2RTF类来实现。对于转换,有两种实现方式。
前端应用程序转换
前端程序转换主要通过应用程序后台调用CuteEditor.Convertor.RTF.HTML2RTF类,将HTML内容转换为RTF格式内容,然后存储到数据库服务器中。示例代码如下:
然后编译成HTMLAndRTFConverter.DLL.
创建Assembly和创建CLR函数的示例代码如下:
-- 创建Assembly
ALTER DATABASE [TEST]
SET TRUSTWORTHY ON
GO
IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'CuteEditor')
DROP ASSEMBLY [CuteEditor]
GO
CREATE ASSEMBLY [CuteEditor]
AUTHORIZATION [dbo]
FROM N'C:/PROGRAM FILES/MICROSOFT SQL SERVER/CUSTOMDLL/CuteEditor.DLL' WITH PERMISSION_SET=EXTERNAL_ACCESS
GO
IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'HTMLAndRTFConverter')
DROP ASSEMBLY [HTMLAndRTFConverter]
GO
CREATE ASSEMBLY [HTMLAndRTFConverter]
AUTHORIZATION [dbo]
FROM N'C:/PROGRAM FILES/MICROSOFT SQL SERVER/CUSTOMDLL/HTMLANDRTFCONVERTER.DLL'WITH PERMISSION_SET=UNSAFE
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SCOM_ConvertHTMLToRTFString_UF]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SCOM_ConvertHTMLToRTFString_UF]
GO
CREATE FUNCTION [dbo].[SCOM_ConvertHTMLToRTFString_UF](@pStrHTML [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [HTMLAndRTFConverter].[XXX.Framework.CLR.HTMLAndRTFConverter].[ConvertHTMLToRTFString]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SCOM_ConvertRTFToHTMLString_UF]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SCOM_ConvertRTFToHTMLString_UF]
GO
CREATE FUNCTION [dbo].[SCOM_ConvertRTFToHTMLString_UF](@pStrRTF [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [HTMLAndRTFConverter].[XXX.Framework.CLR.HTMLAndRTFConverter].[ConvertRTFToHTMLString]
GO
SELECT VALUE_TYPE, [dbo].[SCOM_ConvertHTMLToRTFString_UF](TEST_VALUE) AS RTF FROM TEST WHERE ID =1
/*
VALUE_TYPE RTF
-------------------- -----------------------------------------------------------------------------------------------------------
HTML {/rtf1/ansi/ansicpg1252/deff0/deflang1033{/colortbl;/red0/green0/blue0;..;}...
*/
SELECT VALUE_TYPE, [dbo].[SCOM_ConvertRTFToHTMLString_UF](TEST_VALUE) AS HTML FROM TEST WHERE ID =2
/*
VALUE_TYPE HTML
-------------------- ---------------------------------------------------------------------------------------------------------
RTF <html><body><u>111</u>222<br>333<u>444</u><br>55<u>56</u>66..
*/
到此为止,HTML到RTF的转换完成。下一节将讨论RTF在SSRS 2005中的显示问题。
后台数据库服务器转换。
后台数据库服务器转换主要是将CuteEditor.DLL植入数据库服务器中,作为数据库实例对象,然后创建CLR函数方式实现。示例代码如下:
将HTML内容存储为RTF格式,在基于.NET架构下有很多免费和付费控件可以参考,有基于JavaScript编写的,也有基于WinForm下的RichTextBox集成的。如下简单介绍几种常见的Web页面下使用的RichTextBox.
1) FreeTextBox。免费控件,官方网站是http://freetextbox.com/default.aspx ,根据官方网的介绍,FreeTextBox目前是免费的RichTextBox中使用排列在第一位的控件。很多著名的开源项目都是使用的该控件作为编辑Rich Text格式的文本的首选,例如, Community Server 和DotNetNuke,应用相当广泛。关于FreeTextBox的使用,可以参考 初试牛刀的收获-freetextbox的应用 http://www.cnblogs.com/creazygirl/archive/2006/06/19/429607.html 2) EasyRT。免费控件,官方网站是 http://www.easyui.org.cn/ ,EasyRT是基于WEB前端JavaScript框架轻量级的Rich Text文本编辑器。广泛应用于基于W3C标准的应用中。关于EasyRT的使用,可以参考官网的演示 。
3)RichTextBox for ASP.Net 1.1。免费控件,CodeProject上的开源控件,URL地址是http://www.codeproject.com/KB/aspnet/RichTextBox.aspx。简单实用,轻量级的Rich Text格式文本编辑器,可以继承到ASP.NET下的各种应用。
4) Cute Editor。付费控件,官方网站是http://cutesoft.net/ 和http://www.richtextbox.com/default.htm ,相比于前面几种免费控件而言,Cute Editor的功能更加强大,支持多种格式的转换,性能和效率也很优越。关于CuteEditor的配置可以参考cuteeditor详细设置http://blog.csdn.net/w809026418/archive/2009/09/01/4508072.aspx,关于使用可以参考官网发布的开发手册。
本文中主要使用CuteEditor6.4来实现对HTML格式的转换。前面提到,对于HTML格式的转换,主要是调用CuteEditor.dll中的CuteEditor.Convertor.RTF.HTML2RTF类来实现。对于转换,有两种实现方式。
前端应用程序转换
前端程序转换主要通过应用程序后台调用CuteEditor.Convertor.RTF.HTML2RTF类,将HTML内容转换为RTF格式内容,然后存储到数据库服务器中。示例代码如下:
string strRTF = string.Empty; CuteEditor.Convertor.RTF.HTML2RTF html2rtf = new CuteEditor.Convertor.RTF.HTML2RTF(Editor1.Text); strRTF = html2rtf.RTF;
using System; using System.Collections.Generic; using System.Text; using CuteEditor; namespace XXX.Framework.CLR { public class HTMLAndRTFConverter { /// <summary> /// Convert HTML code to Rich Text Format string. /// </summary> /// <param name="strHTML"></param> /// <returns></returns> public static string ConvertHTMLToRTFString(string strHTML) { string strRtnVal = string.Empty; if (!string.IsNullOrEmpty(strHTML)) { CuteEditor.Convertor.RTF.HTML2RTF html2rtf = new CuteEditor.Convertor.RTF.HTML2RTF(strHTML); strRtnVal = html2rtf.RTF; }//end of strHTML is empty. return strRtnVal; }//end of ConvertHTMLToRTFString /// <summary> /// Convert RTF string to HTML string. /// </summary> /// <param name="strHTML"></param> /// <returns></returns> public static string ConvertRTFToHTMLString(string strRTF) { string strRtnVal = string.Empty; if (!string.IsNullOrEmpty(strRTF)) { CuteEditor.Convertor.RTF.RTF2HTML rtf2html = new CuteEditor.Convertor.RTF.RTF2HTML(strRTF); strRtnVal = rtf2html.ParseRTF(); }//end of strHTML is empty. return strRtnVal; }//end of ConvertHTMLToRTFString }//end of class }//end of namespace.
然后编译成HTMLAndRTFConverter.DLL.
创建Assembly和创建CLR函数的示例代码如下:
-- 创建Assembly
ALTER DATABASE [TEST]
SET TRUSTWORTHY ON
GO
IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'CuteEditor')
DROP ASSEMBLY [CuteEditor]
GO
CREATE ASSEMBLY [CuteEditor]
AUTHORIZATION [dbo]
FROM N'C:/PROGRAM FILES/MICROSOFT SQL SERVER/CUSTOMDLL/CuteEditor.DLL' WITH PERMISSION_SET=EXTERNAL_ACCESS
GO
IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = N'HTMLAndRTFConverter')
DROP ASSEMBLY [HTMLAndRTFConverter]
GO
CREATE ASSEMBLY [HTMLAndRTFConverter]
AUTHORIZATION [dbo]
FROM N'C:/PROGRAM FILES/MICROSOFT SQL SERVER/CUSTOMDLL/HTMLANDRTFCONVERTER.DLL'WITH PERMISSION_SET=UNSAFE
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SCOM_ConvertHTMLToRTFString_UF]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SCOM_ConvertHTMLToRTFString_UF]
GO
CREATE FUNCTION [dbo].[SCOM_ConvertHTMLToRTFString_UF](@pStrHTML [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [HTMLAndRTFConverter].[XXX.Framework.CLR.HTMLAndRTFConverter].[ConvertHTMLToRTFString]
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SCOM_ConvertRTFToHTMLString_UF]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[SCOM_ConvertRTFToHTMLString_UF]
GO
CREATE FUNCTION [dbo].[SCOM_ConvertRTFToHTMLString_UF](@pStrRTF [nvarchar](max))
RETURNS [nvarchar](max) WITH EXECUTE AS CALLER
AS
EXTERNAL NAME [HTMLAndRTFConverter].[XXX.Framework.CLR.HTMLAndRTFConverter].[ConvertRTFToHTMLString]
GO
SELECT VALUE_TYPE, [dbo].[SCOM_ConvertHTMLToRTFString_UF](TEST_VALUE) AS RTF FROM TEST WHERE ID =1
/*
VALUE_TYPE RTF
-------------------- -----------------------------------------------------------------------------------------------------------
HTML {/rtf1/ansi/ansicpg1252/deff0/deflang1033{/colortbl;/red0/green0/blue0;..;}...
*/
SELECT VALUE_TYPE, [dbo].[SCOM_ConvertRTFToHTMLString_UF](TEST_VALUE) AS HTML FROM TEST WHERE ID =2
/*
VALUE_TYPE HTML
-------------------- ---------------------------------------------------------------------------------------------------------
RTF <html><body><u>111</u>222<br>333<u>444</u><br>55<u>56</u>66..
*/
到此为止,HTML到RTF的转换完成。下一节将讨论RTF在SSRS 2005中的显示问题。
后台数据库服务器转换。
后台数据库服务器转换主要是将CuteEditor.DLL植入数据库服务器中,作为数据库实例对象,然后创建CLR函数方式实现。示例代码如下:
相关文章推荐
- 怎样在报表中显示HTML/RTF内容系列之一-SSRS 2008中显示HTML内容
- Android中将带html格式的数据转换成java识别显示内容
- edittext显示html格式化的内容,修改内容后 获取带html格式的内容并上传到服务器
- JasperReport + Servlet Web应用之:HTML显示报表内容
- rtf格式内容转html
- JAVA生产报表导出成PDF格式(报表中的内容存储在String字符串中,需要解析,业务特殊)
- 把内容转换为html格式存储
- Js-Html 前端系列--显示有格式的文本
- 将RTF格式的文件转成HTML并在网页中显示的代码
- Android 中如何将带有html格式的文章转换成能在Android中显示的内容
- 微信小程序中显示html格式内容的方法
- Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
- 微信小程序中显示HTML格式内容的实例
- 将RTF格式的文件转成HTML并在网页中显示的代码
- 将RTF格式的文件转成HTML并在网页中显示的代码
- textarea 提交到数据库的内容,输出到 html 中显示正常的格式
- TextView高级应用之:TextView显示Html格式内容及图片
- 微信小程序中显示html格式内容的方法
- Ext.form.DisplayField扩展组件:在formpanel中显示html格式的内容
- 关于如何显示 html 格式的文本内容