使用库的 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?

谁能指导我完成这个?谢谢。

使用库的 C#

下面是一个最小的示例:

  // ----------------------------------------------------------------------
  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;
相关文章:
  • 没有找到相关文章