簡體   English   中英

從帶有文本和圖像的 RTF 中提取文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM