WebBrowser控件问题(编码和XHTML页面)

时间:2011-01-21 14:55:33

标签: c# winforms encoding webbrowser-control

我真的开始讨厌这种控制,似乎一些小任务几乎是不可能的。我已经研究过替代方案,但没有找到任何有用的东西。

我正在开发一个小应用程序来编辑电子书。我正在使用WebBrowser控件来预览html文件。

首先,我真的很难没有Temp文件,所以我在Memory with Streams中完成了所有操作,修改了html以包含在Base64中编码的图像并直接在Html中包含CSS。这样做的问题是大图像没有正确显示,它迫使用户将IE8放在最低限度。

我寻找其他图书馆,比如Chrome或Firefox引擎,但两者都太大而无法使用(仅当我的应用程序为500k小时,只有11 Meg用于预览)。

然后我决定只使用临时文件,因此我可以使用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),就无法更改。但如果我不使用Navigate,则无法查看或查找CSS和图像。

当导航到XHTML文件时,他们正试图在App之外打开(在默认的Windows浏览器中)。在第一次使用我唯一的Streams时,我没有查看文件的任何问题。

2 - 如何强制在控件内打开XHTML文件?

0 个答案:

没有答案