Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Сохранение RichTextBox в rtf формат

#c_sharp #winforms


Нужно сохранить RichTextBox в rtf формат. Вроде ничего сложного, но у меня появилась
одна проблема. У меня в RichTextBox есть немного текста. Сохраняю в rtf файл:

exRichTextBox1.SaveFile("zzz.rtf", RichTextBoxStreamType.RichText);  

Размер полученного файла как и предполагалось несколько килобайт. Но я еще в RichTextBox
вставляю картинки.

exRichTextBox1.InsertImage(Image.FromFile("photo1.jpg"));
exRichTextBox1.InsertImage(Image.FromFile("photo2.jpg"));


Так же само сохраняю в файл:

exRichTextBox1.SaveFile("zzz.rtf", RichTextBoxStreamType.RichText);


И полученный файл занимает около 25мб. Сами картинки в суме занимают 1,5мб. Пробивал
одну картинку на 0,5мб и полученный файл занимает около 10мб. Короче файл в формате
rtf занимает памяти в 15-20 раз больше чем должен. В чем может быть проблема?
    


Ответы

Ответ 1



Как я понял размер полученного RTF файла больше, потому что RTF сохраняет изображение в формате WMF (Windows Metafile), несжатый формат, из-за этого и размер такой большой. И единственный способ уменьшить размер файла, это архивировать его в rar/zip. Или сделать вот эти изменение в реестре, и пересохранить RTF файл в ворде. Тогда размер уменьшится в 2 раза. А если RTF файл сохранить в формате docx, то размер уменьшится в 4 раза (у меня так вышло).

Комментариев нет:

Отправить комментарий