Files
docview/docs/DEPENDENCIES.md
2026-09-21 13:41:40 +09:00

4.9 KiB
Raw Permalink Blame History

依存関係とビルド記録

2026-09-19のLinux検証で使用した構成。依存ライブラリは動的リンク、DocView内部のライブラリは静的リンクで本体・ワーカーに組み込む。

要素 検証版 固定・取得方法
Qt Base 6.11.2-3(Arch) CMakeで6.11.2 EXACT
Qt Declarative 6.11.2-2(Arch) 同上
Qt WebEngine 6.11.2-1(Arch) 同上。文書JavaScript・通信をアプリ側で制限
PDFium 155.0.8057.0 / chromium/8057 lockの取得URL・SHA-256を照合
libzip 1.11.4-1 システムライブラリ、CMake下限1.11
toml++ 3.4.0-2 システムライブラリ、CMake下限3.4
libseccomp 2.6.0-1 Linuxのみ、CMake下限2.5
Fontconfig 2.18.3 LinuxのMain側FontBrokerのみ、CMake下限2.13。OS font索引・選択に利用
GCC 16.2.1+r23+gd564253eb6c8-1 C++20、Releaseビルド
CMake / Ninja 4.4.3 / 1.13.2 ビルド・CTest
Poppler 26.08.0-1 試験のみ。PDFiumと独立した比較器
libqpdf / qpdf 12.4.1-1 CMakeで12.4.1 EXACT。PDFWorker内でリンク注釈辞書・構造見出しの共有メタデータ読取り。CLIは試験資料の暗号化生成にも利用
Xvfb 21.1.24-1 GUI自動試験の仮想X11画面

PDFiumの上流コミットはa5a7089234f121990b336b3841008009dca143bf。配布元はbblanchon/pdfium-binariesのLinux x64成果物で、V8・XFAは無効。アーカイブSHA-256は7788fa57a2996ebd21afc4090eb0a42b9f95ef3a72e7ef4c0756f1ea703c0415。公開APIだけを利用するが、構造タグのAPIとFPDF_SYSFONTINFO version 2にはExperimental指定があるため、更新時にタグ・MCID・座標に加え、TTCのface選択とshort-buffer callbackの回帰試験を行う。

FontBrokerはPDFiumをMainにリンクせず、LinuxではFontconfig、WindowsではOSのGDI(gdi32)を専用threadで利用する。選択済みfontは上限付きのバイト列としてPDFWorkerへ転送し、Workerにはfontディレクトリーの読取り権限を与えない。static TTF/OpenType/collectionを初期対象とし、候補順と実際の選択情報をfont broker契約に記録する。WindowsのGDI実装はソースと補助コンパイルまでで、native実行は未検証である。

Linuxの実行にはシステムのQt WebEngineプロセス、資源、ロケール、Qtプラグインも必要。Linuxでのcmake --installはPDFium本体とLICENSE/licensesを同梱し、Qtその他はシステムから利用する開発用配置である。クリーンOS向けの自己完結した配布物ではない。

libqpdfはPDFWorkerにだけリンクし、MainにはPDFパーサーを追加しない。同じ継承済みの読み取り専用ファイルから、PDFium公開APIでは取得できないリンク枠のdash配列・Border Style辞書を読む。ファイル名による再openや書込みは行わない。CMakeパッケージとtargetは公式のライブラリー利用方法に従う。使用したLinuxパッケージのApache-2.0ライセンス本文をresources/licenses/qpdfに複写し、installへ含める。各配布物の推移依存と告知の最終確認は残る。

Windows x64の同一版PDFiumアーカイブも取得し、SHA-256 e307d519e42f2e69b1b531f0c2a32dffcdf3891ec0eba60328ba51a57cec01ed、非V8・非XFAのビルド引数、DLLとimport library、Linux版と公開ヘッダー22件の一致を確認した。Windows上でのロード・実行は未検証。WindowsではCMakeパッケージのlibzip/toml++とqpdf 12.4.1 EXACT、libqpdfの推移依存DLL、MSVC x64、対応する公式Visual C++ Redistributableを必要とし、Qt資源はwindeployqtを呼ぶ配置コードを用意した。Windowsの準備手順

PDFiumのBSD系ライセンスと同梱第三者ライセンス、Qtの利用するモジュールごとのライセンス、libzip、toml++、libseccomp、Fontconfigのライセンスを配布方式に応じて収集・表示する工程が残る。DocView自身の公開ライセンスはこの作業では指定していない。

試験文書の本文・図形は本リポジトリーの生成スクリプトで作成した。追加日本語PDFはBIZ UDPGothic Regularをsubset埋込し、OFL本文と元フォントSHA-256をmanifestに保存している。フォント自体をアプリのランタイム依存として追加してはいない。

セキュリティ修正版の導入時は、Qt、PDFium、libqpdf、libzipを独立に更新せず、版・ハッシュを更新して全CTest、PDF独立比較、WebEngine隔離試験を再実施する。記載版の将来のサポート継続や無脆弱性を保証するものではない。