Pyodide¶
개요¶
Pyodide 는 웹 브라우저에서 실행되는 클라이언트 측 Python 구현입니다.
PyMuPDF 의 Pyodide 빌드는 현재 실험적입니다.
Pyodide용 PyMuPDF 휠 빌드¶
일부 환경 변수 설정과 함께 scripts/gh_release.py 를 실행하여 Pyodide용 PyMuPDF 휠을 빌드할 수 있습니다. 이것은 .github/workflows/test_pyodide.yml 에 의해 GitHub에서 정기적으로 테스트됩니다.
다음은 PyMuPDF 체크아웃으로 현재 디렉토리를 설정한 상태에서 실행할 단일 Linux 명령으로 Pyodide 휠을 빌드하는 예제입니다:
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)합니다.
Pyodide 빌드 환경에서 MuPDF 와 PyMuPDF 를 빌드합니다.
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 콘솔을 만들려면 다음으로 이동하세요:
JupyterLite 노트북을 만들려면 다음으로 이동하세요:
https://jupyterlite.readthedocs.io/en/latest/_static/lab/index.html
두 경우 모두 다음 코드를 사용하여 휠을 다운로드(
url을 업로드된 휠의 URL로 교체)하고 가져올 수 있습니다:import pyodide_js await pyodide_js.loadPackage(url) import pymupdf
PyMuPDF 가 공유 라이브러리를 사용하기 때문에
micropip.install()이 작동하지 않습니다.
URL에서 PyMuPDF 로 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)
이것은
http://가 아닌https://에서만 작동하는 것 같습니다.
