Отобразить документ Word из файла Resouce в элемент управления RichTextBox - PullRequest
0 голосов
/ 12 марта 2012

У меня есть документ Word, импортированный в файл ресурсов моего проекта.

Можно ли извлечь этот документ и отобразить его в элементе управления RichTextBox в моем приложении?

Мне удалось извлечь объекты строк и изображений из файла ресурсов моего проекта с использованием следующего класса.

enter image description here

namespace TestProject
{
    public class Utilities
    {
        private static ResourceManager _resource = new ResourceManager("TestProject.Resource1", Assembly.GetExecutingAssembly());

        public static string GetString(string name)
        {
            return (System.String)(_resource.GetString(name));
        }

        public static Image GetImage(string name)
        {
            return (System.Drawing.Image) (_resource.GetObject(name));
        }
    }
}

1 Ответ

1 голос
/ 12 марта 2012

RTF форматируется как строка, и если вы добавите его в раздел «Файлы» файла ресурсов, он обернет его свойством для чтения строки.

То есть:

Properties.Resources.YourDocument;

реализован как:

    internal static string YourDocument {
        get {
            return ResourceManager.GetString("YourDocument", resourceCulture);
        }
    }

и возвращает форматированный текст, выглядящий примерно так:

{\ rtf1 \ ansi \ ansicpg1252 \ deff0 \ deflang3081 {\ fonttbl {\f0 \ fnil \ fcharset0 Calibri;}} {\ colortbl; \ red255 \ green255 \ blue0;} {* \ generator Msftedit 5.41.21.2510;} \ viewkind4 \ uc1 \ pard \ sa200 \ sl276 \ slmult1 \ cf1 \ lang9 \ f0 \fs22 Rich \ cf0, многострочный текст. \ par \ par Is \ b \ fs32 здесь \ b0 \ fs22 \ par}

Оставив только то, что нужно сделать:

richTextBox1.Rtf = RichTextResource.Properties.Resources.YourDocument 

Это предполагает, что документ фактически сохраняется как форматированный текст.Слово doc будет отображаться как мусор.

Наконец, если ваш ресурс хранится в виде байта [], вам нужно сначала преобразовать в строку.Т.е.

richTextBox1.Rtf = System.Text.Encoding.UTF8.GetString(bytes), assuming its UTF8 encoded. 
...