如何将 FlowDocument 转换为字符串?

How to convert FlowDocument to string?

1) 如何将FlowDocument转为字符串?

2) 如何将我的字符串转换为 FlowDocument?

FlowDocument包含文字和图片。

应保留字符串中的文本。 Text12345

图片必须转换。例如编码:iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV

Text12345
iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV
Text67890


<text>
    Text12345
    <encoded_image>
        iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAABHNCSV
    </encoded_image>
    Text67890
</text>

XAML:

<RichTextBox x:Name="textrich" >
    <FlowDocument >
        <Paragraph/>
    </FlowDocument>
</RichTextBox>

获取 RichTextBox 文本的常用方法是使用 TextRange:

string rtb = new TextRange(rtb .Document.ContentStart, rtb .Document.ContentEnd).Text;

在您的情况下,您希望以不同方式处理不同的块和内联。你可以列举它们。像这样:

var res = new StringBuilder();
foreach (Block r in rtb.Document.Blocks)
    {
        if (r is Paragraph) 
            foreach (Inline i in ((Paragraph)r).Inlines)
                if (i is Run)
                {
                    res.Append(r.ToString());
                }
                else if (i is InlineUIContainer)
                {
                     res.Append(ConvertToString((Image)((InlineUIContainer)i).Child)); // you should create ConvertToString() method 
                } 

   }