【问题标题】:After saving to DataFormats.Rtf from a RichTextBox's FlowDocument written in Unicode从用 Unicode 编写的 RichTextBox 的 FlowDocument 保存到 DataFormats.Rtf 后
【发布时间】:2017-07-05 01:43:39
【问题描述】:

该过程似乎会“破坏”单词,因此会干扰拼写检查。例如,这个词,它在 C# 中拼写正确并完全以编程方式写入 FlowDocument,它似乎在内部分解,因此 RTF 编辑器(例如 Word 2016)上的拼写检查器稍后将打开文件, 会发现拼写错误(如上图所示)。如果单词被复制然后直接粘贴到纯文本模式,它不会正确显示拼写错误。

如果我用 TextRange 保存 FlowDocument,行为并没有什么不同。问题不会出现在英语中。问题是不一致,偶尔显示正确。

我怀疑这是 RTF 编写过程本身的限制或错误。也许偶尔会有某种内部换行符。我想知道是否有人找到了解决该问题的一般方法。

更新:这是来自 RTF 纯文本的图像,以防它响铃。中间的粉红色文字是“错误”的单词,底部和顶部的粉红色单词基本上是同一个单词,但 Word 2016 没有发现任何拼写错误正确:

【问题讨论】:

    标签: c# wpf richtextbox rtf flowdocument


    【解决方案1】:

    我无法使用此示例复制问题(我使用了另一个 Unicode 字符串)。

        public MainWindow()
        {
            InitializeComponent();
            RichTextBox rtb = new RichTextBox();
            rtb.Language = System.Windows.Markup.XmlLanguage.GetLanguage("fa-IR");
            rtb.Document.Blocks.Add(new Paragraph(new Run("درست")) { FlowDirection = FlowDirection.RightToLeft });
    
            TextRange tr = new TextRange(rtb.Document.ContentStart,
                                rtb.Document.ContentEnd);
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                tr.Save(ms, DataFormats.Rtf);
                ms.Seek(0, System.IO.SeekOrigin.Begin);
                System.IO.File.WriteAllBytes(@"J:\test.rtf", ms.ToArray());
            }
        }
    

    【讨论】:

    • 也许可以尝试在页面顶部添加更多内容。如果我没记错的话,我在 el-GR 上使用的词是“περισσότερα”。
    • 测试这个和其他一些 Unicode 字符。什么都没有。
    猜你喜欢
    • 2023-03-19
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    相关资源
    最近更新 更多