PDF Manager - Éditeur PDF client-side

Chaque fois que je devais fusionner deux PDF, je me retrouvais sur ilovepdf.com à uploader des fichiers parfois confidentiels. Contrats, audits, données client... envoyés sur un serveur inconnu. J ai voulu un outil où tout reste dans le navigateur. Zéro upload, zéro compromis.

IV - Persistant 8 jours 2026-03-06 2026-03-13
XP
100%

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

CoucheChoixPourquoi
FrameworkAngular 21 (standalone components, signals)Signals pour la réactivité, CDK pour le drag-drop
PDFpdf-lib (manipulation) + pdfjs-dist (rendu)Tout côté client, fusion/rotation/compression incluses
Drag-dropAngular CDKRéorganisation fluide des miniatures
TestsVitest (unit) + Playwright (E2E)Couverture complète sans dépendance navigateur
IconsLucide AngularCohérent avec le reste de l’écosystème
DeployDocker multi-stage (Node 22 build → Nginx 1.27 alpine)Image légère, build reproductible
CI/CDAzure DevOps + GitLab CIDouble 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ée8 jours
Composants8
Services15
LanguesFR + EN
URLpdf.tordu-jardin.fr
DeployDocker + Nginx

Stack technique

Angular 21

Framework SPA

Signals pour la réactivité, CDK pour le drag-drop natif

pdf-lib

Manipulation PDF

Tout traiter côté client sans envoyer les fichiers

pdfjs-dist

Rendu PDF

Prévisualiser les pages avant export

Page d accueil avec dropzone

Page d accueil avec dropzone

Éditeur avec miniatures et toolbar

Éditeur avec miniatures et toolbar

Page d accueil avec dropzoneÉditeur avec miniatures et toolbar
RUM, fix service worker+2 commits

Service de Real User Monitoring ajouté. Fix du cache service worker qui pré-chargeait le worker PDF de 2.5 Mo.

  • Service RUM (Real User Monitoring)
  • Exclusion pdf.worker.min.mjs du prefetch SW
Mobile, i18n, images, recherche+3 commits

UX mobile repensée avec bottom sheet. Internationalisation FR/EN complète. Import direct d images (JPG, PNG, WebP, TIFF). Recherche plein texte avec highlights. Compression PDF à l export.

  • Bottom sheet preview mobile
  • i18n FR/EN (104 clés)
  • Import images (JPG, PNG, WebP, TIFF) en pages PDF
  • Recherche plein texte avec surbrillance
  • Compression PDF à l export
  • Undo/Redo (Ctrl+Z / Ctrl+Shift+Z)
0 → éditeur fonctionnel+8 commits

Premier jour. Angular 21, pdf-lib, pdfjs-dist. Dropzone, fusion de PDF, rotation, suppression, réorganisation drag-drop. Pipeline Azure DevOps. PWA installable.

  • Scaffold Angular 21 + pdf-lib + pdfjs-dist
  • Dropzone avec support multi-fichiers
  • Fusion, rotation, suppression, réorganisation de pages
  • Preview miniatures + plein écran
  • PWA installable avec service worker
  • Pipeline CI/CD Azure DevOps