将带有UIElement的FlowDocument导出到rtf

本文关键字:rtf FlowDocument UIElement | 更新日期: 2023-09-27 18:24:18

我正在尝试将包含网格的FlowDocument导出到rtf。我使用了以下代码

using (FileStream fs = new FileStream(@"C:'demo.rtf", FileMode.OpenOrCreate, FileAccess.Write))
{
    TextRange textRange = new TextRange(doc.ContentStart, doc.ContentEnd);
    textRange.Save(fs, DataFormats.Rtf);
}

然而,我收到了一份空白文件。如何解决这个问题?

将带有UIElement的FlowDocument导出到rtf

我最近遇到了类似的问题,结果发现罪魁祸首是

FileMode.OpenOrCreate

应该是

FileMode.Create 

相反。当您使用OpenOrCreate,并且文件已经存在,并且包含的内容比您写入的内容多时,您将在新内容结束后结束旧文件。Word或写字板或你试图打开它的任何东西可能无法正确解读,但会试图向你展示它的功能,在你的情况下,这可能是一个空白页。

第二个可能是问题的一部分的问题是,你用来打开它的查看器和你用来编写它的FlowDocument可能不在同一波长上。您可能会注意到,例如,写字板显示相同的rtf文件的方式与Word不同。保存它们时,它们还会生成非常不同的文件。FlowDocument也是如此——它可能保存了一些东西,例如写字板甚至Word(尽管可能性较小)无法正确显示(或根本无法正确显示)。