LoginSignup
2
0

Siv3Dでpdfを表示したかった

Last updated at Posted at 2023-12-17

はじめに

この記事は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

有料なので試せず。.NetJavaなら無料らしい。

Aspose

ダウンロードページより23.11をダウンロード&展開、さらにCodePorting.Translator.Cs2Cpp_vc14_23.11.zipを展開。
ReadMeよりHelloWorld.slnのテストプロジェクトを実行。
いくつかのexampleでエラー発生するもそれらをコメントアウトして、通して成功。
アカウント登録やライセンス購入なくできたので個人使用には良い選択肢だと思うが、これを含んでの配布はかなり怪しいのでパス。

poppler

mupdfの派生らしい。
ちゃんと試せていない。

WebView2

MicrosoftEdgeの表示を組み込む感じで、そのブラウザでpdfを表示する。

WebView2SamplesGettingStartedGuides/Win32_GettingStartedのソリューションを開いてプロジェクト>NuGetパッケージの管理からMicrosoft.Web.WebView2Microsoft.Windows.ImplementationLibraryをインストールし、実行するとC++でブラウザを開けた。pdfも表示できた。

Siv3Dのプロジェクトに導入し、CreateWindowの類を除いて表示部分のみを貼り付けるもIcoreWebView2Environment* envnullptrとエラー。
自前ビルド版でCWindow.cppにかけばどうにかなるのではと試すも今度はパッケージも認識してくれない。
そもそもwindow作成からWebViewまで知識が何もないのでこれ以上できないかと断念。

おわりに

いろんな方法を試していたらアドベントカレンダーの予約日に間に合わなくなりかけました。よってどの検証も浅いです。
mupdfとWebView2に関しては自分のスキル不足が原因のようなので、どなたか試して成功した場合は教えてください。

自分以外にはSiv3Dでpdfを表示する需要はないでしょうが、ウェブページのアプリ内表示は需要がありそうです。

  • 操作方法の説明書をリンクで開くのではなくアプリ内で表示(説明書はGitHubとかに上げておけば、ダウンロードされた後から追記しても最新版を見てもらえる)
  • アプリ起動時にGitHubのリリースページを表示することで、新バージョンがリリースされて更新できることや変更内容を見せられる
  • フィードバックを得たいとき、リンクのボタンを置いておくより、アンケートページがそのまま表示されている方が回答率が高そう

など。

できたとしてもかなり先になると思いますが、将来的にSiv3DにWebViewが実装されたら嬉しいです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0