はじめに
この記事はSiv3D Advent Calendar 2023の17日およびOUCC Advent Calendar 2023の20日の記事です。
タイトルの通り、成功していません。
やり方を求めてこの記事を見つけた方にとってあまり参考にならないかと思います。
結論:WebVew2が一番希望がありそう。
動機
コマンドで動かすグラフ作成ツールが使いにくいので、Siv3Dを使ってGUIから作成するツールを作っていました。
しかしpdfファイルはSiv3Dアプリ内で確認することができず、外部のブラウザなどで作成したグラフを表示し、ウィンドウを並べて見てもらう必要がありました。
それを表示したくいろいろ試したというお話です。
試したこと
mupdf
Cで書かれているがC++のAPIがあるとのこと。他にpythonなどもある。
Quick Start Guideを参考にlibmupdf
をビルド。
Siv3Dのプロジェクトに導入(追加のインクルードディレクトリ設定、リンカの設定)するもLNK2005
が発生するのを解決できず。
(途中でエラー解決に「最新の v142 ビルドツール用 C++ MFC (x86 および x64)」をVisual Studioに入れた。)
Spire
Aspose
ダウンロードページより23.11をダウンロード&展開、さらにCodePorting.Translator.Cs2Cpp_vc14_23.11.zip
を展開。
ReadMeよりHelloWorld.sln
のテストプロジェクトを実行。
いくつかのexampleでエラー発生するもそれらをコメントアウトして、通して成功。
アカウント登録やライセンス購入なくできたので個人使用には良い選択肢だと思うが、これを含んでの配布はかなり怪しいのでパス。
poppler
mupdfの派生らしい。
ちゃんと試せていない。
WebView2
MicrosoftEdgeの表示を組み込む感じで、そのブラウザでpdfを表示する。
WebView2SamplesのGettingStartedGuides/Win32_GettingStarted
のソリューションを開いてプロジェクト>NuGetパッケージの管理
からMicrosoft.Web.WebView2
とMicrosoft.Windows.ImplementationLibrary
をインストールし、実行するとC++でブラウザを開けた。pdfも表示できた。
Siv3Dのプロジェクトに導入し、CreateWindowの類を除いて表示部分のみを貼り付けるもIcoreWebView2Environment* env
がnullptr
とエラー。
自前ビルド版でCWindow.cpp
にかけばどうにかなるのではと試すも今度はパッケージも認識してくれない。
そもそもwindow作成からWebViewまで知識が何もないのでこれ以上できないかと断念。
おわりに
いろんな方法を試していたらアドベントカレンダーの予約日に間に合わなくなりかけました。よってどの検証も浅いです。
mupdfとWebView2に関しては自分のスキル不足が原因のようなので、どなたか試して成功した場合は教えてください。
自分以外にはSiv3Dでpdfを表示する需要はないでしょうが、ウェブページのアプリ内表示は需要がありそうです。
- 操作方法の説明書をリンクで開くのではなくアプリ内で表示(説明書はGitHubとかに上げておけば、ダウンロードされた後から追記しても最新版を見てもらえる)
- アプリ起動時にGitHubのリリースページを表示することで、新バージョンがリリースされて更新できることや変更内容を見せられる
- フィードバックを得たいとき、リンクのボタンを置いておくより、アンケートページがそのまま表示されている方が回答率が高そう
など。
できたとしてもかなり先になると思いますが、将来的にSiv3DにWebViewが実装されたら嬉しいです。