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 빌드 환경에서 MuPDFPyMuPDF 를 빌드합니다.

  • 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 노트북에서 사용할 수 있습니다.

  • 두 경우 모두 다음 코드를 사용하여 휠을 다운로드(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:// 에서만 작동하는 것 같습니다.

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.