Pyodide#

概述#

  • Pyodide 是一个在web浏览器中运行的客户端Python实现。

  • PyMuPDF的Pyodide构建目前处于实验阶段。

为 Pyodide 构建 PyMuPDF wheel#

可以通过运行 scripts/gh_release.py 并设置一些环境变量来为 Pyodide 构建 PyMuPDF wheel。这在 Github 上通过 .github/workflows/test_pyodide.yml 定期进行测试。

这里是一个示例,一个单一的Linux命令(在当前目录设置为PyMuPDF的检出版本时运行),用于构建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虚拟环境中):

  • 下载 (git 克隆和 pip 安装) 并定制 Pyodide 构建环境。

  • 下载 (git clone) 最新的 MuPDF。

  • 在 Pyodide 构建环境中构建 MuPDF 和 PyMuPDF。

  • dist/ 中创建一个轮子。

有关更多信息,请查看 build_pyodide_wheel()pyodide_setup() 函数在 scripts/gh_release.py 中的注释。

使用 Pyodide wheel#

从 URL 加载 PDF 文档到 PyMuPDF#

  • Pyodide 浏览器控制台没有通用的网络访问权限,因此例如 urllib.request.urlopen(url) 失败。但是 Pyodide 有一个内置的 pyodide.http 模块,它内部使用 JavaScript,可以用来下载到一个 bytes 实例,这可以用来创建一个 PyMuPDF Document 实例:

    import pyodide.http
    r = await pyodide.http.pyfetch('https://...')
    data = await r.bytes()
    doc = pymupdf.Document(stream=data)
    
  • 看起来这只适用于 https://,而不适用于 http://


本软件按原样提供,不作任何明示或暗示的担保。该软件根据许可证分发,除非按照该许可证的条款明确授权,否则不得复制、修改或分发。有关许可信息,请参阅artifex.com或联系Artifex Software Inc.,地址:39 Mesa Street, Suite 108A, San Francisco CA 94129, United States以获取更多信息。