C # рдореЗрдВ rtf рдХреЛ xml рдореЗрдВ рдмрджрд▓реЗрдВ

C # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ xml рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдкреЛрд╕реНрдЯ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдореЗрдВ, рдореИрдВ rff рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ ред


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╛рд░реВрдк рдХрд╛рдлреА рдкреНрд░рд╛рдЪреАрди рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдФрд░ рдЕрдЧрд░ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ xml рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ Microsoft рд╕реЗ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХрдо рд╕реЗ рдХрдо OpenXML рдХреЗ рд╕рдорд╛рдиред ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реЛрддрд╛, рддреЛ рдпрд╣ рд▓реЗрдЦ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реЛрддрд╛ред


рддреЛ ReachTextFile (rtf) рдлрд╝рд╛рдЗрд▓ рдХреНрдпрд╛ рд╣реИ? рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдлрд╝рд╛рдЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд░рдЪрд┐рдд рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ json, xml рдФрд░ xpath рдХреЗ рдорд┐рд╢реНрд░рдг рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рддреА рд╣реИред рдЗрд╕реЗ рдХреБрдЫ рд╡рд░реНрдб рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХреЛ rtf рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рд╕реЗрд╡ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реЗрд░рд┐рдлрд╛рдИ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ Notadad ++ :



рдореИрдВрдиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реИ: рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЯреИрдЧ рдХреЛ рдПрдиреНрд╕реА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕реНрд╡рдпрдВ ansicpg1251 рдХреЗ рд╕рд╛рде рдПрдиреНрдХреЛрдбреЗрдб рд╣реИред рдкрд╛рда рд╕реНрд╡рдпрдВ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:



, , , , тАж , , , , php.


, , , , , , , . - .


, , , rtf RichTextBox, :


  • -, Windows.Forms, .
  • -, . , RichTextBox , , .

, nuget RtfPipe. .


RtfPipe . rtf html. , HtmlAgilityPack.


, - ? : , , , , . , rtf- , , , , тАФ , , , , , .


, .


public string Convert(Stream stream)
        {
            stream.Position = 0;
            string rtf = string.Empty;
            using (StreamReader sr = new StreamReader(stream))
            {
                rtf = sr.ReadToEnd();
            }
            //      RtfPipe  Core 
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
            //    RtfPipe  html
            var html = Rtf.ToHtml(rtf);
            //  html     ,   xml
            return ClearHtml(html);
        }

  1. string. RtfPipe. ,
  2. , .Net Core Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);. RtfPipe. .
    .Net Framework, .
  3. var html = Rtf.ToHtml(rtf); тАФ html . , , , ( ), .


string ClearHtml(string html), xml:


string ClearHtml(string html)
{
    //  html   HtmlAgilityPack
    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);
    //    (),     style
    var elementsWithStyleAttribute = doc.DocumentNode.SelectNodes("//@style");
    //   ,    
    var excessNodes = doc.DocumentNode.SelectNodes("//b|//u|//strong|//br");
    //     html
    foreach (var element in excessNodes)
    {
        element.ParentNode.InnerHtml = element.InnerText;
        element.Remove();
    }
    foreach (var element in elementsWithStyleAttribute)
    {
        element.Attributes["style"].Remove();
    }
    //    html
    using (StringWriter writer = new StringWriter())
    {
        doc.Save(writer);
        html = writer.ToString();
    }
    //   html  xml
    StringBuilder xml = new StringBuilder();
    xml.Append("<?xml version=\"1.0\"?><documents><document>");
    xml.Append(html);
    xml.Append("</documents></document>");
    return xml.ToString();
}

  1. , HtmlAgilityPack nuget
  2. doc HtmlDocument html
  3. , , . , style, , , , .
  4. C , StringBuilder xml, .

, , , .



docx xlsx


All Articles