リッチテキストをHTMLに解析するこのメソッドがあります。私はそれがこのようなインラインスタイルを構成しているいくつかの場所であることに気づきました:
<DIV STYLE="text-align:Left;font-family:Segoe UI;font-style:normal;font-weight:normal;font-size:12;color:#000000;">
font-sizeの最後に「pt」がないことに注意してください。これは、pdfにエクスポートするときにレポートを壊します。
これを処理するための私のコードは次のとおりです。
public static string RtfToHtml(string rtfText)
{
if (String.IsNullOrEmpty(rtfText)) return rtfText;
if (!rtfText.Contains(@"{\rtf1")) return rtfText.Replace("\r\n", "<br>").Replace("\r", "<br>");
Converter converter = new Converter();
StringBuilder sb = new StringBuilder(converter.ConvertRtfToHtml(rtfText));
sb.Replace("font-size:12;", "font-size:12pt;");
try
{
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(sb.ToString());
RemoveStyleTags(doc, "ol");
RemoveStyleTags(doc, "ul");
RemoveStyleTags(doc, "li");
return doc.DocumentNode.InnerHtml;
}
catch { }
return sb.ToString();
}
私の質問はこれです:これを行うよりも、.Replace()メソッドを実行するためのより洗練された方法はありますか?
sb.Replace("font-size:12;", "font-size:12pt;");
sb.Replace("font-size:13;", "font-size:13pt;");
sb.Replace("font-size:14;", "font-size:14pt;");
...
sb.Replace("font-size:10000;", "font-size:10000pt;");
明らかに、私がやろうとしているのは、タイプミスのあるfont-size宣言をすべて見つけて、ptを追加し、それらがすでに持っている整数サイズを維持することです。