Mercurial > hgrepos > Python2 > PyMuPDF
diff mupdf-source/platform/wasm/BUILDING.md @ 2:b50eed0cc0ef upstream
ADD: MuPDF v1.26.7: the MuPDF source as downloaded by a default build of PyMuPDF 1.26.4.
The directory name has changed: no version number in the expanded directory now.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 15 Sep 2025 11:43:07 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mupdf-source/platform/wasm/BUILDING.md Mon Sep 15 11:43:07 2025 +0200 @@ -0,0 +1,102 @@ +# 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`
