hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

EBPocket for WinRT(3) - 検索成功するも画像表示できず

富士通スーパー統合辞書を検索するの図:

研究社リーダーズ第二版で単語検索するの図:

外字が豆腐(□)になっていること以外は完璧に見えるが、実はここで大きな壁にあたってしまった。
どうやらWindows8.0のWebViewでは、ローカルのHTMLのリソースを表示することができないらしいのだ。
EBPocketのiOS版以降では、本文をhtmlに変換して、各プラットフォームのブラウザコントロールで表示しているので、これは致命的な問題である。

参考:

具体的に言うと、WebViewでは、セキュリティのために、Navigate()の引数のUriに、"file://"を使用できない。
それはいいとして、ローカルデータを表すスキームとして使用される"ms-appdata://"も使用できない。(もちろんWindows絶対パスも使用できない。)
唯一使用できるスキームは"ms-appx-web://"だけだが、これはパッケージのインストールディレクトリを表し、リードオンリーなので、アプリが動的に生成するhtmlには使用できない。(コンテンツを内蔵したアプリならこれでも問題ない。だがデータが独立で提供されるEPWINGビューアでは駄目だ)
なお、NavigateToString()でhtmlソースを指定することは可能だ。だが、html中の画像の参照でimgタグに”file://”も"ms-appdata://"も使用できないので、ローカルの画像(EPWINGでは外字や図版)を表示できない(このために豆腐になる)。まったく八方ふさがりである。
腹立たしいことに、Windows8.1からは、WebViewでローカルHTMLが使用できるようになるらしい(WebView Class (Windows.UI.Xaml.Controls) - UWP app developer | Microsoft Docs)。
しかし、既に市場には8.0が出荷されており、全てのPCが8.1にアップグレードするわけではない以上、手遅れである。プレビュー段階で分かっている問題なのに、なぜこんな仕様で出荷したのか不思議でならない。
セキュリティを重視するのはいいが、アプリそのものが作れないのではしかたない。まるで「手術は成功したが患者は死にました」みたいなOSである。
あえて動的にコンテンツの画像を表示するとすれば、htmlをRichTextに変換して画像を埋め込めば可能かもしれないが、開発工数がかかりすぎる。素直に動作条件をWindows8.1以上にするのが妥当だろう。

とりあえず、Windows8.1がリリースされるまでEBPocket for WinRTの開発は凍結するかもしれない。