Pense-bête, autohébergement de bentopdf (bis)
Suite du précédent billet sur le sujet
Rappel : Bentopdf est un ensemble d’outils en ligne pour manipuler des fichiers PDF qui a le mérite de fonctionner totalement localement (c’est le navigateur qui éxécute les opérations sur les fichiers).
Comme elles sont un peu éparpillées sur le wiki officiel, qui est biaisé en faveur des conteneurs (docker surtout), voilà des instructions pour héberger statiquement (donc sans docker/podman), dans un sous dossier, en mode simple, et sans appeler un CDN pour les outils en WASM (pymupdf, ghostcript, coherentpdf) :
Toutes les commandes suivantes sont à réaliser dans un shell.
En premier lieu, il faut cloner le dépôt et installer les dépendances npm (qui devra être installé au préalable) :
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
Ensuite, on va télécharger les 3 outils :
npm pack @bentopdf/pymupdf-wasm@0.11.14
npm pack @bentopdf/gs-wasm
npm pack coherentpdf
On obtient 3 fichier .tgz dont on se servira plus tard.
Maintenant, on configure et génère les fichiers. Activation du mode simple :
export SIMPLE_MODE=true
Le site est dans un sous dossier (ici bento) :
export BASE_URL=/bento/
Où trouver les outils en WASM (le chemin est arbitraire, vous mettez ce que vous voulez du moment que c’est accessible) :
export VITE_WASM_PYMUPDF_URL=https://mon_site.com/bento/wasm/pymupdf/
export VITE_WASM_GS_URL=https://mon_site.com/bento/wasm/gs/
export VITE_WASM_CPDF_URL=https://mon_site.com/bento/wasm/cpdf/
et maintenant on génère les fichiers :
npm run build
Enfin, on créé les dossiers pour les outils et on copie tout ça (les noms des fichiers sont à adapter à ce que vous avez) :
mkdir -p dist/wasm/pymupdf dist/wasm/gs dist/wasm/cpdf
tar xf bentopdf-pymupdf-wasm-0.11.14.tgz -C dist/wasm/pymupdf/ --strip-components=1
tar xf bentopdf-gs-wasm-0.1.1.tgz -C dist/wasm/gs/ --strip-components=1
tar xf coherentpdf-2.5.5.tgz -C dist/wasm/cpdf/ --strip-components=1
Il n’y a plus qu’à faire servir le contenu du dossier dist (généralement en le plaçant
dans quelques chose du genre /var/www/mon_site.com/bento )