这是一个非常小的问题,所以请耐心等待。
我正在创建一个允许发送电子邮件的软件。
发送部分完美无瑕。
问题是电子邮件的正文以rtf格式保存在mssql数据库中。当我检索rtf(存储在字符串中)时,电子邮件以纯文本形式发送,rtf代码被视为文本。
我需要将rtf文本转换为html,我正在尝试使用此库:http://www.codeproject.com/KB/recipes/RtfConverter.aspx
事情是我对如何使用它一无所知。当我提取库时,有数百个文件。我设法通过biin / release文件夹中的dll添加参考rtf.interpreter,rtf.parser,rtf.converter.html。但现在我不知道下一步。
如何在我的项目中使用它将rtf字符串转换为html?
任何人都可以指导我完成这个吗?谢谢。
答案 0 :(得分:2)
通过查看文章,我相信您要找的课程是RtfHtmlConverter
。
最简单的方法是将所有.dll文件从Release文件夹复制到项目内的文件夹中(您也可以将所有其他依赖项放在此处)。然后,右键单击项目中的References
文件夹(在VS Solution Explorer中),以及(当对话框打开时)使用“浏览”查找适当的程序集。
然后,您可以使用本文中提供的示例将RTF输入流转换为HTML字符串:
取自article you specified,作者的所有学分(虽然略有修改以返回值,而不是将其打印到控制台):
public string ConvertRtf2Html(Stream rtfStream)
{
// logger
RtfInterpreterListenerFileLogger logger =
new RtfInterpreterListenerFileLogger(@"c:\temp\RtfInterpreter.log");
// image converter
// convert all images to JPG
RtfVisualImageAdapter imageAdapter =
new RtfVisualImageAdapter(ImageFormat.Jpeg);
RtfImageConvertSettings imageConvertSettings =
new RtfImageConvertSettings(imageAdapter);
imageConvertSettings.ScaleImage = true; // scale images
RtfImageConverter imageConverter =
new RtfImageConverter(imageConvertSettings);
// interpreter
IRtfDocument rtfDocument = RtfInterpreterTool.Interpret(rtfStream,
logger, imageConverter);
// html converter
RtfHtmlConvertSettings htmlConvertSettings =
new RtfHtmlConvertSettings(imageAdapter);
htmlConvertSettings.StyleSheetLinks.Add("default.css");
RtfHtmlConverter htmlConverter = new RtfHtmlConverter(rtfDocument,
htmlConvertSettings);
return htmlConverter.Convert();
}
您可以添加一个接受字符串的重载:
public string ConvertRtfToHtml(string rtfString)
{
string sourceRtf = "some rtf";
byte[] data = ASCIIEncoding.Default.GetBytes(sourceRtf);
using (MemoryStream ms = new MemoryStream(data))
{
// call the method above
return ConvertRtfToHtml(ms);
}
}
您还需要在源文件的开头添加几个using
子句,以包含必要的命名空间:
using Itenso.Rtf.Interpreter;
using Itenso.Rtf.Converter.Html;
using Itenso.Rtf.Converter.Image;
答案 1 :(得分:2)
这是一个最小的样本:
// ----------------------------------------------------------------------
private static string ConvertRtfToHtml()
{
const string sampleRtfText = @"{\rtf1foobar}";
IRtfDocument rtfDocument = RtfInterpreterTool.BuildDoc( sampleRtfText );
RtfHtmlConvertSettings settings = new RtfHtmlConvertSettings();
settings.ConvertScope = RtfHtmlConvertScope.Content;
RtfHtmlConverter htmlConverter = new RtfHtmlConverter( rtfDocument, settings );
return htmlConverter.Convert();
} // ConvertRtfToHtml
还查看包含的样本 RtfWinForms (winForms)或 RtfWindows (WPF)。