使用UIElement将FlowDocument导出到rtf

时间:2013-07-22 13:37:35

标签: c# wpf flowdocument uielement

我正在尝试将包含网格的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);
}

但是我得到一份空白文件。怎么解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

FileMode.OpenOrCreate

应该是

FileMode.Create 

代替。 当您使用OpenOrCreate并且该文件已经存在且内容多于您写入的内容时,您将在新内容结束后结束旧文件。 Word或写字板或者您尝试打开它的任何内容可能无法正确解释它,但会尝试向您显示可能在您的情况下可能是空白页。

可能是问题的一部分的第二个问题是您用来打开它的查看器,并且您用来编写它的FlowDocument可能不是在相同的波长上来温和地说。 您可能会注意到,例如,写字板显示与Word不同的rtf文件。 保存它们时,它们也会生成非常不同的文件。 FlowDocument也是如此 - 它可能会保存一些东西,例如写字板甚至Word(虽然这不太可能)无法正确显示(或根本不显示)。