PDF Compressor est une application web en une page pour compresser des fichiers PDF avec Ghostscript.
L'utilisateur envoie un PDF, choisit un niveau de compression, attend le traitement, puis télécharge le fichier compressé via un lien temporaire. L'application est prévue pour fonctionner dans Docker afin que Ghostscript soit fourni par l'image, sans dépendre de la machine hôte.
- Upload d'un PDF jusqu'à 50 MB.
- Compression avec les presets Ghostscript
screen,ebook,printer,prepressetdefault. - Mode expert désactivé par défaut, avec options Ghostscript validées côté serveur.
- File d'attente FIFO: une seule compression tourne à la fois.
- Suppression automatique des fichiers source et compressés 10 minutes après génération.
- Interface en français.
Pour l'utilisation recommandée:
- Docker
- Docker Compose
Pour lancer l'application hors Docker:
- Node.js 22 ou compatible
- npm
- Ghostscript installé localement et disponible via la commande
gs
Clonez le projet puis placez-vous dans le dossier:
git clone <url-du-depot>
cd pdf-compressorInstallez les dépendances JavaScript si vous voulez utiliser les commandes npm hors Docker:
npm installAvec Docker, l'installation des dépendances et de Ghostscript est faite pendant le build de l'image.
La commande recommandée démarre l'application dans Docker sur le port 3350:
docker compose up --buildOuvrez ensuite:
http://localhost:3350
Le port de développement est publié uniquement sur 127.0.0.1.
Pour lancer l'image de production locale sur le port 3351:
docker compose -f compose.yml -f compose.prod.yml up --buildOuvrez ensuite:
http://localhost:3351
Ces commandes sont utiles pour développer ou vérifier le frontend localement. Elles nécessitent que Ghostscript soit installé sur la machine si vous utilisez la compression.
npm run devDémarre le serveur en mode développement sur le port 3350.
npm run buildConstruit le frontend dans dist/.
npm run startDémarre le serveur en mode production sur le port 3351. Lancez npm run build avant cette commande pour servir le frontend compilé.
- Ouvrez l'application dans le navigateur.
- Sélectionnez un fichier PDF de 50 MB maximum.
- Choisissez un niveau de compression.
- Optionnellement, activez le mode expert et ajustez les options proposées.
- Cliquez sur
Compresser. - Attendez la fin du traitement.
- Téléchargez le PDF compressé avant l'expiration du lien.
Si plusieurs fichiers sont envoyés en même temps, les compressions sont traitées dans l'ordre d'arrivée.
Les fichiers sont stockés dans runtime/ pendant le traitement. En Docker, ce dossier est monté en tmpfs dans le conteneur.
Les fichiers source et compressés ne doivent pas être versionnés. Ils sont supprimés automatiquement 10 minutes après la génération du PDF compressé.
L'interface utilise les routes suivantes:
GET /api/presets: liste les presets de compression.GET /api/expert-options: liste les options du mode expert.POST /api/jobs: crée une compression à partir d'un champ fichierpdf.GET /api/jobs/:id: lit le statut d'une compression.GET /api/jobs/:id/download: télécharge le PDF compressé quand il est prêt.
Les principales variables d'environnement sont:
NODE_ENV:developmentouproduction.PORT: port d'écoute du serveur.RUNTIME_DIR: dossier temporaire utilisé par l'application.MAX_UPLOAD_MB: taille maximale d'un upload PDF, par défaut50.FILE_TTL_MINUTES: durée de conservation des fichiers générés, par défaut10.