Le besoin
Au boulot, on manipule régulièrement des PDF confidentiels : rapports d’audit, contrats, documents client. Les outils en ligne type ilovepdf.com font très bien le travail, mais ils impliquent d’envoyer ces fichiers sur des serveurs tiers. C’est un compromis que je ne voulais plus faire. Il fallait un outil qui fasse la même chose, mais où rien ne quitte le navigateur.
Comment ça marche
On arrive sur la page, on glisse ses fichiers PDF ou ses images sur la dropzone. Les pages apparaissent en miniatures. À partir de là, tout se manipule à la souris ou au clavier : on réorganise par drag-drop, on pivote une page avec Q et E, on en supprime une avec Del. On peut regrouper les pages par couleur pour s’y retrouver dans un gros document, chercher du texte avec la recherche plein texte qui surligne les résultats, ou modifier du texte directement dans le PDF.
L’outil gère aussi l’import d’images (JPG, PNG, WebP, TIFF) converties automatiquement en pages PDF, la compression à l’export pour réduire la taille du fichier final, et le undo/redo classique avec Ctrl+Z. L’interface est disponible en français et en anglais. Sur mobile, la preview passe en bottom sheet avec support tactile. Quand c’est prêt, on fusionne et on télécharge. Rien ne part sur un serveur.
Stack
| Couche | Choix | Pourquoi |
|---|---|---|
| Framework | Angular 21 (standalone components, signals) | Signals pour la réactivité, CDK pour le drag-drop |
| pdf-lib (manipulation) + pdfjs-dist (rendu) | Tout côté client, fusion/rotation/compression incluses | |
| Drag-drop | Angular CDK | Réorganisation fluide des miniatures |
| Tests | Vitest (unit) + Playwright (E2E) | Couverture complète sans dépendance navigateur |
| Icons | Lucide Angular | Cohérent avec le reste de l’écosystème |
| Deploy | Docker multi-stage (Node 22 build → Nginx 1.27 alpine) | Image légère, build reproductible |
| CI/CD | Azure DevOps + GitLab CI | Double pipeline selon l’environnement |
Client-side only
C’est la contrainte fondamentale du projet et ce qui le distingue de tous les “PDF tools” en ligne. Les fichiers sont manipulés avec pdf-lib directement dans le navigateur. Les previews sont rendues par pdfjs-dist dans des canvas. La PWA avec service worker permet de travailler hors-ligne après le premier chargement. Zéro upload serveur, zéro tracking, zéro compromis sur la vie privée. C’est la même philosophie que Basalt Beholder, qui produit des rapports d’audit complets directement dans le navigateur.
L’application est accessible sur pdf.tordu-jardin.fr.
Stats
| Durée | 8 jours |
| Composants | 8 |
| Services | 15 |
| Langues | FR + EN |
| URL | pdf.tordu-jardin.fr |
| Deploy | Docker + Nginx |
