Mercurial > hgrepos > Python2 > PyMuPDF
view mupdf-source/platform/wasm/BUILDING.md @ 16:bd5bb0742cc3
A "check" target that checks for all venv and host prerequisites
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 17 Sep 2025 21:11:25 +0200 |
| parents | b50eed0cc0ef |
| children |
line wrap: on
line source
# Building MuPDF.js from source The WebAssembly build has only been tested on Linux at the moment. If you use any other platform then you are on your own! ## Dependencies This project has two dependencies that MUST be installed FIRST! ### Emscripten You need to install the Emscripten SDK in `/opt/emsdk`. If you install it elsewhere, you will need to edit `tools/build.sh` to point to the appropriate location. > https://emscripten.org/docs/getting_started/downloads.html We have only tested against EMSDK version 4.0.8. Use another version at your own peril! /opt/emsdk/emsdk install 4.0.8 /opt/emsdk/emsdk activate 4.0.8 ### Node.js Install Node.js and NPM. We use the current LTS version, which at the moment is v22. The version that ships with Debian is probably too old to use. > https://nodejs.org/en If you don't want to install Node separately, you can piggy-back on the Node version that ships with Emscripten: export PATH="/opt/emdsk/node/20.18.0_64bit/bin:$PATH" ## Building You need to be in the `platform/wasm` directory for these build steps. cd platform/wasm The following command will download and install all the NPM project dependencies. npm install To compile the WebAssembly and Typescript files: npm run prepack The results of the build are put into the `dist` directory: - `dist/mupdf-wasm.wasm` - `dist/mupdf-wasm.js` - `dist/mupdf.js` The `mupdf-wasm.wasm` file is quite large, because it contains not only the MuPDF library code, but also the 14 core PDF fonts, various CJK mapping resources, and ICC profiles. In order to keep it as small as possible, it is built with a minimal feature set that excludes the more refined CJK fonts, AcroForm scripting, and XPS input format. ## Installing and Running The main module is the `mupdf.js` file. ### Use the MuPDF.js module in a browser To use MuPDF.js directly in the browser, put the `dist/mupdf-wasm.wasm`, `dist/mupdf-wasm.js`, and `dist/mupdf.js` somewhere on your site, and import the `mupdf.js` module. There's an example of using MuPDF.js in the browser with a WebWorker in `examples/simple-viewer`. npm run simple-viewer ### Use the MuPDF.js module in Node You can `npm pack` and `npm install` the project in another directory. You can also run the examples directly from here. ## Customizing The build can be customized to enable a different feature set, by calling the tools/build.sh script with the appropriate environment variables. See the Makefile for some examples. The most noteworthy of these is the "memento" configuration, which enables a memory debugger. make memento If you're seeing weird memory corruption issues, Memento is the best way to track them down! ## Editing The source files are: - `lib/mupdf.c` - `lib/mupdf.ts`
