使用库的 C#
本文关键字: | 更新日期: 2023-09-27 17:56:17
这是一个相当菜鸟的问题,所以请耐心等待。
我正在创建一个允许发送电子邮件的软件。
发送部分完美运行。
问题是电子邮件的正文以 rtf 格式保存在 mssql 数据库中。当我检索 rtf(存储在字符串中)时,电子邮件以纯文本形式发送,其中 rtf 代码被视为文本。
我需要将 rtf 文本转换为 html,我正在尝试使用此库:http://www.codeproject.com/KB/recipes/RtfConverter.aspx
问题是我不知道如何使用它。当我提取库时,有数百个文件。我设法通过biin/release文件夹中的dlls添加为引用rtf.interpreter,rtf.parser,rtf.converter.html。但现在我不知道下一步。
如何在我的项目中使用它来将 rtf 字符串转换为 html?
谁能指导我完成这个?谢谢。
下面是一个最小的示例:
// ----------------------------------------------------------------------
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)。
从这篇文章来看,我相信你要找的类是RtfHtmlConverter
.
最简单的方法是将所有.dll文件从 Release 文件夹复制到项目内的文件夹中(您也可以将所有其他依赖项放在这里)。然后,右键单击项目中的References
文件夹(在 VS 解决方案资源管理器中),并(当对话框打开时)使用"浏览"查找相应的程序集。
然后,您可以使用本文中提供的示例将 RTF 输入流转换为 HTML 字符串:
取自您指定的文章,所有功劳归作者(尽管稍作修改以返回值,而不是将其打印到控制台):
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;