2011-05-13 59 views
0

這是一個相當不錯的問題,所以請耐心等待。c#使用庫

我正在創建一個允許發送電子郵件的軟件。

發送部分完美地工作。

問題是電子郵件的主體以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?

任何人都可以引導我通過這個?謝謝。

回答

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)。

+0

謝謝你。指出我在正確的方向。 – Yash 2011-05-13 17:24:39

2

從看文章我相信你正在尋找的類是RtfHtmlConverter

最簡單的方法是將Release文件夾中的所有.dll文件複製到項目中的文件夾中(也可以在此處放置所有其他依賴項)。然後,右鍵單擊項目中的References文件夾(在VS解決方案資源管理器中),(當對話框打開時)使用「瀏覽」查找適當的程序集。

然後,您可以使用本文中提供的例子爲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); 
    } 
} 

您還需要加s everal using條款,您的源文件的開頭,包括必要的命名空間:

using Itenso.Rtf.Interpreter; 
using Itenso.Rtf.Converter.Html; 
using Itenso.Rtf.Converter.Image;