Я действительно начинаю ненавидеть этот контроль, кажется, что какую-то маленькую задачу почти невозможно выполнить.Я искал альтернативу, но не нашел ничего полезного.
Я работаю над небольшим приложением для редактирования электронных книг.Я использую элемент управления WebBrowser для предварительного просмотра html-файлов.
Сначала я очень старался, чтобы не было временных файлов, поэтому я сделал все это в памяти с потоками, изменив html для включения изображений, закодированных в Base64.и включая CSS непосредственно в HTML.Проблема в том, что большое изображение отображается неправильно, и это заставляет пользователя иметь IE8 как минимум.
Я искал другие библиотеки, например Chrome или Firefox Engine, но обе они слишком велики, чтобыбыть полезным (11 мегабайт только для предварительного просмотра, когда мое приложение небольшого размера 500 КБ).
Затем я смирился с тем, что использовал только временные файлы, поэтому у меня была бы лучшая совместимость и меньше проблем с CSS и изображениями.
Проблема, с которой я столкнулся, заключается в том, что в некоторых файлах (на некоторых компьютерах) обнаружена неправильная кодировка (windows-1252), что приводит к неправильному отображению некоторых неанглийских символов.Я хочу, чтобы их принуждали к UTF-8.Если я возьму файл и закодирую текст с помощью StreamReader в UTF8 и передам их в свойство DocumentText, я потеряю все изображения и форматирование.
public frmPreview(string filename, string Chapter)
{
InitializeComponent();
string Path = Variables.TempFolder + "\\" + Utils.GetFilePathInsideZip(filename);
webBrowser1.Navigate(Path);
webBrowser1.Document.Encoding = "utf-8";
this.Text = Chapter;
}
1 - Как я могу принудительно закодировать кодстраница, независимо от настроек компьютера?
Пожалуйста, примите во внимание, что изображения и CSS важны, и я не могу найти способ иметь и мои изображения, и правильную кодировку, потому что после загрузки текста (с навигацией), это не может быть изменено.Но если я не использую Navigate, он не может видеть или находить CSS и изображения.
Также при переходе к файлам XHTML они пытаются открыться вне приложения (в браузере Windows по умолчанию).Сначала при использовании моих единственных потоков у меня не было проблем с просмотром файлов.
2 - Как заставить файлы XHTML открываться внутри элемента управления?