首页 > 解决方案 > RTF 通过 RichTextBox 转 HTML,如何设置正确的字体大小?

问题描述

我有一个格式文本,通过调用RTF从 a 接收到。我需要将其转换为 html,但我发现的最佳解决方案是. 无论如何,这使用 a ,它加载 RTF 格式的文本,然后从那里作为 XAML 获取,然后将其转换为 HTML。UWP RichEditBoxEditor.Document.GetText(TextGetOptions.FormatRtf, out string rtf);MarkupConverterWPF RichTextBox

问题是,如果我设置更大的字体大小,在 RTF 中显示为\fs44,并且当它转换为 XAML 时,它会显示为以下方式:FontSize="34.666666666666664". 我想看看FontSize="34pt"(或35,没关系)。

理解为什么会发生这种情况,但是有没有办法告诉 RichTextBox 将其舍入并放置该pt文本?

如果您能提出一种将 RTF 转换为 HTML 的更好方法,我也将不胜感激。

标签: c#wpfrtf

解决方案


我通过搜索并用正则表达式替换 html 中的字体大小来解决它:

public static string ConvertFloatingFontSize(string html) {
    var matches = Regex.Matches(html, @"font-size:([0-9]+.?[0-9]*);");
    if (matches.Count > 0) {
        foreach (Match match in matches) {
            var fontSize = match.Value;
            if (html.IndexOf(fontSize) >= 0 && match.Groups.Count > 1) {
                double.TryParse(match.Groups[1].Value, out double result);
                if (result > 0) {
                    int sizeAsInt = (int)result;
                    html = html.Replace(fontSize, $"font-size:{sizeAsInt}px;");
                }
            }
        }
    }
    return html;
}

推荐阅读