LoginSignup
6
4

More than 1 year has passed since last update.

PDFium の Windows DLL をビルドする

Last updated at Posted at 2020-12-24

PDFium とは

PDFium は chrome で利用されている PDF レンダリングエンジンです。
Apache ライセンスなので、商用利用 も可能です。

レンダリングエンジンですが、新規PDFの作成、PDFのマージ、PDFのページ追加/削除なども可能です。

ビルド環境

Windows 10 Pro バージョン2004
Visual Studio 2019
Windows SDK 10.0.19041.0

ビルド手順

一応、この手順でビルドできましたが、冗長な部分があるかもしれません。

depot_tools ツールのダウンロード

depot_tools をダウンロードして、解凍します。

depot_tools ツールフォルダの python_bin_reldir.txt を編集

各自の python 実行ファイルがある場所を示すようにします。
私は anaconda でインストールしているので、以下のようにしました。

..\..\Anaconda

環境変数の追加

  • Path 環境変数に depot_tools のパスを追加
  • DEPOT_TOOLS_WIN_TOOLCHAIN=0
  • vs2019_install=C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional

PDFium ビルドフォルダの作成

コマンドプロンプトを開き、新規フォルダを作成して、そこに移動します。

c:\
mkdir hoge
cd hoge

gclient の実行

まずは引数無しで

gclient

次に引数ありで

gclient config https://pdfium.googlesource.com/pdfium.git

生成された .gclient ファイルを開き、"managed" を False にして、保存します。

最後に

gclient sync -vv

最後は少し時間がかかりますので、お風呂でも入るか、テレビでも見ていてください。

作成された pdfium フォルダに移動

cd pdfium 

BUILD.gn の変更

以下を修正し、保存します。(右が修正後)

image.png

image.png

public\fpdfview.h" の変更

以下を修正し、保存します。(右が修正後)

image.png

ビルドファイルの生成

out\Custom_x86_Release 以下にビルドファイルを生成します。フォルダ名はお好きに指定してください。
以下は x86/Release の設定です。x64 にしたり、debug にしたい場合、その他オプションは該当箇所を書き換えてください。

gn gen-ide=vs out\Custom_x86_Release -–args="target_cpu=\"x86\" pdf_is_standalone=true is_component_build=false is_official_build=true is_debug=false pdf_enable_xfa=false pdf_enable_v8=false chrome_pgo_phase=0 pdf_use_skia=false pdf_use_skia_paths=false clang_use_chrome_plugins=false"

ビルド

out\Custom_x86_Release に all.sln があるので、Visual Studio で開いて、pdfium を右クリックからビルドすれば、DLLが生成されます。
設定にも拠りますが、ビルドにもかなり時間がかかります。

私は、Visual Studio からよりも手軽にビルドできる、以下のコマンドを実行しました。

ninja -C out\Custom_x86_Release pdfium

# 以下のような出力でビルドが完了します。
ninja: Entering directory `out\Custom_x86_Release'
[981/981] LINK(DLL) pdfium.dll pdfium.dll.lib pdfium.dll.pdb

DLL 利用時

C/C++ | 全般 | 追加のインクルードディレクトリ : pdfium\public
C/C++ | プリプロセッサ | プリプロセッサの定義 : FPDFSDK_EXPORTS
リンカー | 入力 | 追加の依存ファイル:pdfium.dll.lib

レンダリングで必要なヘッダは以下です。

#include "fpdfview.h" // pdfium\public

Tips

できあがった sln ファイルを開いて、Visual Studio 上 でビルドの構成を新規に作ろうとしたら、単に時間がかかっているだけなのか、固まってしまいました。
なので、新規構成を作りたければ、gn gen のコマンドで出力フォルダを変えて、--args の内容も変えて、別なフォルダに作るようにしましょう。

参考URL

PDFium を Windows on ARM (ARM64) 向けにビルドする - しばやん雑記

Pre-compiled binaries of PDFium

6
4
2

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
6
4