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();
}
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var html = Rtf.ToHtml(rtf);
return ClearHtml(html);
}
- string.
RtfPipe
. , - , .Net Core
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
. RtfPipe. .
.Net Framework, . var html = Rtf.ToHtml(rtf);
тАФ html . , , , ( ), .

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