我有一個從 WPF RichTextControl 中提取的位元組陣列,我從中提取文本。我成功使用以下代碼:
FlowDocument document = new FlowDocument();
TextRange txtRange = null;
using (MemoryStream stream = new MemoryStream(data))
{
txtRange = new TextRange(document.ContentStart, document.ContentEnd);
txtRange.Load(stream, DataFormats.XamlPackage);
}
當 rtf 中嵌入了影像時,問題就開始了。我仍然想提取文本,但上面的代碼將XamlParseException在該Load方法上失敗。
我嘗試使用以下方法:
using (RichTextBox rtb = new RichTextbox())
{
rtb.Rtf = System.Text.Encoding.Default.GetString(data);
// use rtb.Text
}
但是 rtb.Rtf 的設定失敗了ArgumentException。原因可能在這里解釋,因為GetString確實不回傳預期的 rtf 格式,而是混合文本/二進制資料與 xaml 的提及(相同的格式也僅回傳文本,已使用先前的方法成功提取)。我無法升級框架。
如果需要提取文本,我不介意遍歷 FlowDocument 樹,如果我能找到一種成功加載檔案的方法。
是否有其他方法可以讀取 RTF?
uj5u.com熱心網友回復:
顯然,當影像包含在 RTF 中時,代碼將在 STA 中運行時起作用。例如:
Thread t = new Thread(() => Foo(data));
t.SetApartmentState(Apartment.STA);
t.Start();
t.Join();
Foo()
{
FlowDocument document = new FlowDocument();
TextRange txtRange = null;
using (MemoryStream stream = new MemoryStream(data))
{
txtRange = new TextRange(document.ContentStart, document.ContentEnd);
txtRange.Load(stream, DataFormats.XamlPackage);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/387567.html
上一篇:是否可以將類實體用作C#中的值?
