Autor Beitrag
Yasutani
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Do 06.07.17 10:39 
Guten Morgen,

das Ziel ist ein einfachster Texteditor für RTF in WPF. Leider geht beim laden von RTF-Dateien mit DataFormats.RTF der HangingIndent verloren.
Mit nachfolgenden Code kann das nach nachvollzogen werden:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
this.richTextBox.Document = new FlowDocument();
richTextBox.AppendText("test test test test test test test test.");
richTextBox.SelectAll();
richTextBox.Selection.ApplyPropertyValue(Paragraph.MarginProperty, new Thickness(30000));
richTextBox.Selection.ApplyPropertyValue(Paragraph.TextIndentProperty, -10.0);

// ... \li450\ri0\sa0\sb0\fi-150\ql\par --> li=450 und fi=-150, ok

var dataString = string.Empty;
var textRange = new TextRange(this.richTextBox.Document.ContentStart, this.richTextBox.Document.ContentEnd);
using (MemoryStream memoryStream = new MemoryStream())
{
textRange.Save(memoryStream, DataFormats.Rtf);
memoryStream.Seek(0, SeekOrigin.Begin);
using (StreamReader streamReader = new StreamReader(memoryStream))
    dataString = streamReader.ReadToEnd();
}

textRange = new TextRange(this.richTextBox.Document.ContentStart, this.richTextBox.Document.ContentEnd);
using (MemoryStream memoryStream = new MemoryStream(Encoding.ASCII.GetBytes(dataString)))
{
textRange.Load(memoryStream, DataFormats.Rtf);
}

// .... \li450\ri0\sa0\sb0\fi0\ql\par  --> li=450 und fi=0, fehler

Speichern als RTF funktioniert - nur das laden hat einen Fehler. Als XAML würde es klappen ist aber leider keine Option.

Ich finde auch im Netz nichts dazu - hat jemand eine Idee?

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 3930
Erhaltene Danke: 803

Win7
C++, C# (VS 2015/17)
BeitragVerfasst: Do 06.07.17 11:26 
Hallo,

da scheint wohl die RTF-Umsetzung nicht 100%ig zu sein.

Kommen denn in deinem RTF-Dokument nur ASCII-Zeichen vor? Nimm mal besser Encoding.Default.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2164
Erhaltene Danke: 399

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Do 06.07.17 12:27 
Oder Encoding.UTF8+ für die Silbenschrift oder ähnliches.

Nachtrag

Das Beispiel lässt sich ein wenig vereinfachen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
private void LoadRtfDoc(RichTextBox richBox, string filePath, Encoding encoding)
{
    using (var fs = new StreamReader(filePath, encoding))
        richBox.AppendText(fs.ReadToEnd());
}

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)