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`