0

У меня есть файл MHT (Microsoft web archive), который я добавил в папку проекта. Мне нужен этот файл для отображения в WebView на странице справки. Я установил действие сборки файла в «Содержимое», например, this question reccomended. Затем я использую этот код в обработчике событий Loaded.Доступ к файлу MHT из каталога решений в Windows 8.1 App

Try 
     Dim strHelpNavigate = Path.Combine(Windows.ApplicationModel.Package.Current.InstalledLocation.ToString(), "\MyAppsHelp.mht") 
     webHelp.Navigate(New Uri(strHelpNavigate)) 
    Catch ex As Exception 
     webHelp.NavigateToString("<html><head><style>body {font-family: segoe ui; color: white; background-color: black;}</style></head><body><h2>Sorry, the help page is currently unavailable.</h2></body></html>") 
    End Try 

Этот код выдает исключение: {"Invalid URI: The format of the URI could not be determined."}

Я также попытался прохождением "\MyAppsHelp.mht" к Navigate методе как this question Рекомендуемой, но это производит то же самое исключение, и я вижу, из локального окна, что строка передается к методу Navigate то же самое.

Есть ли у кого-нибудь советы о том, как отобразить этот файл в WebView?

ответ

0

WebView не поддерживает файлы в формате HTML, но вы можете выполнить преобразование этих файлов в html + images, если вы так склонны.

Открыть файл .mht в блокноте, и вы увидите, что для каждой части файла HTML есть отдельные разделы - вы можете анализировать эти разделы, чтобы получить HTML-выход, затем закодированные в base64 изображения, а затем сохранить их в вашей локальной папке приложения и используйте WebView.NavigateToLocalStreamUri для их загрузки. См. http://blogs.msdn.com/b/wsdevsol/archive/2014/06/20/a-primer-on-webview-navigatetolocalstreamuri.aspx для получения подробной информации об использовании этого метода.

Конечно, если это статический файл, который вы будете использовать все время, было бы гораздо проще просто преобразовать его перед упаковкой приложения.

+0

спасибо за ввод информации о файлах MHT. Однако после реализации вашего решения и перехода по коду я обнаружил, что он ищет файлы в «LocalFolder» приложения, а мой файл находится в папке/папке проекта. Вы знаете, как получить доступ к файлу? –

+0

Я думаю, что это то, что вы хотите: ApplicationData.Current.LocalFolder –

+0

Нет, который обращается к той же папке, что и «ms-appdata: /// Local», которая является папкой, к которой обращается URI-резольвер. –