首页 文章

WPF RichTextBox可以显示二进制图片内容吗?

提问于
浏览
0

我试图在新的WPF应用程序中显示RTF文件(在遗留系统中创建)并遇到了一些困难 . 旧的RTF文件包含格式化为二进制jpegblip的图片,当读入RichTextBox时,会导致此异常:

Unrecognized structure in data format 'Rich Text Format'. Parameter name: stream

我将文件缩小到最低限度以隔离问题并最终得到以下开头行(此帖子已删除二进制数据):

{\rtf1{\pict\picw2700\pich2700\picwgoal2700\pichgoal2700\jpegblip\bin9889

这仍然导致异常,因此我将二进制数据转换为十六进制并使用开头行创建了一个新文件:

{\rtf1{\pict\picw2700\pich2700\picwgoal2700\pichgoal2700\jpegblip

控件正确显示其中包含十六进制数据的文件 .

有没有人能够将包含二进制图片数据的文件加载到RichTexBox控件中,或者失败了,是否有一个关于RichTextBox从RTF规范支持什么的不同陈述?

2 回答

  • 0

    我甚至不确定Microsoft知道RichTextBox实现了什么 . 他们对RTF的想法在不受限制的空间中浮动 . 请参阅MS Word,Wordpad,众多传统Rich Edit控件等 .

    这有一些评论,讨论在.NET代码中使用COM对象,这在某种程度上是可预测的,但Microsoft再次没有指定它们遵循的规范的哪些部分 . Broken tables in RichTextBox control (word wrap) - 如果正确包装它们,可以在WPF中使用它们 .

    如果您只需要显示文档,则可能会询问您的所有用户是否都拥有Word . 然后你可能能够嵌入Word文档查看器,并解决问题 . 如果您的软件在办公室中使用,则很容易添加 .

    我可能会读到这种格式,直到我知道它是如何工作的 . 然后在我的程序中,我会将RTF文件读入缓冲区,获取原始对象数据,以某种方式进行翻译,用更新的对象替换这些对象,然后将其传递给控件 .

  • -1

    对我来说,这段代码运行正常 . 我甚至可以从数据库表中提取它 .

    <RichTextBox Height="100" HorizontalAlignment="Left" Margin="306,30,0,0" Name="rtfMain" VerticalAlignment="Top" Width="200" />
    
    
    rtfMain.Selection.Load(new FileStream(@"C:\temp\document.rtf", FileMode.Open), DataFormats.Rtf);
    

相关问题