Pyodide#
概要#
Pyodide は、ウェブブラウザで実行されるクライアントサイドの Python 実装です
PyMuPDF の Pyodide ビルドは現在実験的な段階です。
Pyodide 用の PyMuPDF ホイールの構築#
Pyodide 用の PyMuPDF ホイールは、いくつかの環境変数設定を使用して scripts/gh_release.py を実行することで構築できます。これは、.github/workflows/test_pyodide.yml によって定期的に GitHub 上でテストされています。
以下は、これの例です。現在のディレクトリが PyMuPDF のチェックアウトに設定されている場合に実行される単一の Linux コマンドです。
inputs_sdist=0 \
inputs_PYMUPDF_SETUP_MUPDF_BUILD="git:--recursive --depth 1 --shallow-submodules --branch master https://github.com/ArtifexSoftware/mupdf.git" \
inputs_wheels_default=0 \
inputs_wheels_linux_pyodide=1 \
./scripts/gh_release.py build
これは以下の作業を行います(すべて Python venv 内で実行):
Pyodide ビルド環境をダウンロード(git clone および pip install)し、カスタマイズします
最新の MuPDF をダウンロード(git clone)します。
MuPDF と PyMuPDF を Pyodide ビルド環境でビルドします。
dist/にホイールを作成します
詳細については、scripts/gh_release.py 内の関数 build_pyodide_wheel() と pyodide_setup() のコメントを参照してください。
Pyodide ホイールの使用方法#
PyMuPDF/dist/PyMuPDF-1.24.2-cp311-cp311-emscripten_3_1_32_wasm32.whlのようなホイールを、Cross-origin resource sharing(https://en.wikipedia.org/wiki/Cross-origin_resource_sharing)を許可するように構成されたウェブサーバにアップロードします。このホイールは、ウェブブラウザで実行されている Pyodide コンソールまたは JupyterLite ノートブックで使用できます。
Pyodide コンソールを作成するには、次のURLにアクセスしてください:
JupyterLite ノートブックを作成するには、次のURLにアクセスしてください:
https://jupyterlite.readthedocs.io/en/latest/_static/lab/index.html
れらの場合、以下のコードを使用してホイールをダウンロード(
urlをアップロードされたホイールの URL に置き換える)し、インポートできます:import pyodide_js await pyodide_js.loadPackage(url) import pymupdf
micropip.install()は PyMuPDF が共有ライブラリを使用しているため機能しないことに注意してください。
PyMuPDF にURLからPDFドキュメントを読み込む#
Pyodide ブラウザコンソールには一般的なネットワークアクセスがないため、例えば
urllib.request.urlopen(url)は失敗します。しかし、Pyodide には JavaScript を内部で使用する組み込みのpyodide.httpモジュールがあります。これを使用してbytesインスタンスにダウンロードし、それを使用して PyMuPDF Document (ドキュメント) インスタンスを作成できます:import pyodide.http r = await pyodide.http.pyfetch('https://...') data = await r.bytes() doc = pymupdf.Document(stream=data)
これは
https://でのみ機能するようです。http://では機能しません。
