|ZYCWPF| 为什么RichTextBox导出后,小弟我发现Margin好没有导出呢?多谢
|ZYCWPF| 为什么RichTextBox导出后,我发现Margin好没有导出呢?谢谢
我用
导出RichTextBox内容
然后用Word打开,发现Margin都无效了
然后再用
Load回来后发现Margin全为"0,0,0,0"
------解决方案--------------------
rtf没有Margin属性,你需要另外保存FlowDocument的其余属性。
------解决方案--------------------
先去了解rtf的格式
http://baike.baidu.com/view/18817.htm
------解决方案--------------------
http://www.microsoft.com/en-us/download/details.aspx?id=10725
------解决方案--------------------
rtf可以用\sa \sb来控制段落的间距。
http://msdn.microsoft.com/en-us/library/aa140283(v=office.10).aspx#rtfspec_20
我试了导出到rtf后,margin是保留的。从rtf再读入后margin也是正确的。
你会看到导入、导出前后段落间隔不一致,这是因为如果不写margin,导出后margin缺省就是0。而在rtb中,如果不写margin,缺省是字体高度*行间距。
你可以把paragraph的缺省margin设成0,这样rtb和word中就可以看到同样的效果。
或者可以在导入rtf后,取得document的xaml,然后删掉里面的 Margin="0,0,0,0" 这样的字符串,再重新装载,这样可以让导出/导入前后的效果一致。
我用
TextRange textRange = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
using (MemoryStream ms = new MemoryStream())
{
textRange.Save(ms, System.Windows.DataFormats.Rtf);
ms.Seek(0, SeekOrigin.Begin);
StreamReader sr = new StreamReader(ms);
var rtf = sr.ReadToEnd();
File.WriteAllText("rtfsample.rtf", rtf);
}
导出RichTextBox内容
然后用Word打开,发现Margin都无效了
然后再用
var fs = new FileStream("rtfsample.rtf", FileMode.Open, FileAccess.Read);
StreamReader streamReader = new StreamReader(fs, System.Text.Encoding.UTF8);
using (fs)
{
TextRange text = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
text.Load(fs, DataFormats.Rtf);
}
streamReader.Dispose();
streamReader = null;
fs.Dispose();
fs = null;
Load回来后发现Margin全为"0,0,0,0"
------解决方案--------------------
rtf没有Margin属性,你需要另外保存FlowDocument的其余属性。
------解决方案--------------------
先去了解rtf的格式
http://baike.baidu.com/view/18817.htm
------解决方案--------------------
http://www.microsoft.com/en-us/download/details.aspx?id=10725
------解决方案--------------------
rtf可以用\sa \sb来控制段落的间距。
http://msdn.microsoft.com/en-us/library/aa140283(v=office.10).aspx#rtfspec_20
我试了导出到rtf后,margin是保留的。从rtf再读入后margin也是正确的。
你会看到导入、导出前后段落间隔不一致,这是因为如果不写margin,导出后margin缺省就是0。而在rtb中,如果不写margin,缺省是字体高度*行间距。
你可以把paragraph的缺省margin设成0,这样rtb和word中就可以看到同样的效果。
或者可以在导入rtf后,取得document的xaml,然后删掉里面的 Margin="0,0,0,0" 这样的字符串,再重新装载,这样可以让导出/导入前后的效果一致。