🌒

mupdfのソースをカスタマイズし、それをPyMuPDFに反映した

2024/04/30に公開

wrote 2024/04/30

通常、PyMuPDF 2.24.2 をソースからインストールと、
https://mupdf.com/downloads/archive/mupdf-1.24.1-source.tar.gz がダウンロードされ、解凍し、ビルドし、そのライブラリが使用される。

カスタマイズした、手元にあるソースからビルドするには、PYMUPDF_SETUP_MUPDF_BUILDに、パスを設定する。
また、TESSERACTを不要にするには、PYMUPDF_SETUP_MUPDF_TESSERACT='0'
クリーンインストールするには、PYMUPDF_SETUP_MUPDF_CLEAN='1' とする。

これらのパラメータについては、PyMuPDFのsetup.pyに記載がある。

うまくいかず、何度も失敗した。自分の環境(macOS10.15.7 Catalina)
libclangが必要だった。pip install libclang で設定した。
swigなかった。brew install swig をした。

PyMuPDFのdirと同じ階層に、mupdf-1.24.1-souceのdirがある場合、次のコマンドで、インストールした。

PYMUPDF_SETUP_MUPDF_TESSERACT='0' PYMUPDF_SETUP_MUPDF_CLEAN='1' PYMUPDF_SETUP_MUPDF_BUILD='../mupdf-1.24.1-source' python setup.py install

起動すると、
PyMuPDF-1.24.2/setup.py: ### Starting. と表示され、パラメータがずらずら表示される。その中に、

PyMuPDF-1.24.2/setup.py: PYMUPDF_SETUP_MUPDF_BUILD: '../mupdf-1.23.11-source'
PyMuPDF-1.24.2/setup.py: PYMUPDF_SETUP_MUPDF_CLEAN: '1'
PyMuPDF-1.24.2/setup.py: PYMUPDF_SETUP_MUPDF_TESSERACT: '0'

となっており、反映されているのが確認できる。

ビルドが進み、最後に
pipcl.py: install(): Writing to: *********************/mupdf/.venv/lib/python3.8/site-packages/PyMuPDF-1.24.2.dist-info/RECORD
pipcl.py: install(): Finished.
pipcl.py: handle_argv(): Finished handling command: install

で終わった。

ところが!
1.23でもやってみたのだが、エラーが出て、ソースからビルドできない....

Discordで聞いてみたところ、libclangのバージョンが新しすぎるとのこと。
pip install libclang==17.0.6
してから、実行したところ、

pipcl.py: install(): Finished.
pipcl.py: handle_argv(): Finished handling command: install
となった!

Discussion