[英]Extracting text from RTF with text and image
我有一個從 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 中嵌入了圖像時,問題就開始了。 我仍然想提取文本,但上面的代碼將在Load
方法上出現XamlParseException
失敗。
我嘗試使用以下方法:
using (RichTextBox rtb = new RichTextbox())
{
rtb.Rtf = System.Text.Encoding.Default.GetString(data);
// use rtb.Text
}
但是 rtb.Rtf 的設置因ArgumentException
而失敗。 這里可能解釋了原因,因為GetString
確實沒有返回預期的 rtf 格式,而是混合了文本/二進制數據,並提到了 xaml (同樣的格式也只返回文本,使用以前的方法成功提取)。 我無法升級框架。
如果我能找到成功加載文檔的方法,如果需要提取文本,我不介意遍歷 FlowDocument 樹。
是否有其他方法可以閱讀 RTF?
顯然,當圖像包含在 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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.