Convertir un PDF en Word sans uploader vos fichiers.
Si vous tapez « convertir PDF en Word » sur Google, vous tombez sur les mêmes sites que pour « éditer PDF en ligne » : interface bleue rassurante, gros bouton central, promesse de gratuité, et au moment où vous cliquez « Convertir », votre fichier décolle vers un bucket S3 dans le Wisconsin. Le résultat est correct, votre fichier est conservé « temporairement » (trois ans dans la pratique), votre adresse IP est loggée, vos mots-clés extraits indexent quelque part. Vous avez payé l'outil avec votre vie privée.
Le pire, c'est que la conversion PDF → DOCX est techniquement faisable dans un navigateur. Pas pour les cas vicieux (tableaux croisés sur 4 colonnes, formules math, PDF scanné), mais pour les 90 % de PDF qu'on traite vraiment : un CV, une facture, un cours, un mémoire, une attestation administrative. La plupart sont du texte mis en page de façon simple, et le navigateur sait extraire ce texte depuis quinze ans.
Alors j'ai fait pdf2docx.tutoriel.be, un convertisseur qui fait ça sans demander la garde de vos fichiers.
Comment ça marche
Le pipeline tient en quatre étapes, toutes dans votre navigateur :
- 1. Extraction du texte. pdf.js (le moteur de Mozilla qui rend les PDF dans Firefox) lit votre fichier page par page et retourne chaque morceau de texte avec ses coordonnées exactes dans la page.
- 2. Reconstruction des paragraphes. On regroupe les morceaux par ligne (même position verticale) puis les lignes en paragraphes (un grand espace vertical = nouveau paragraphe). C'est heuristique mais ça fonctionne très bien sur du texte courant.
- 3. Détection des titres. Une ligne dont la police est sensiblement plus grosse que la médiane du document est considérée comme un titre (heading 1 ou 2 selon l'écart).
- 4. Génération du fichier Word. La librairie docx (npm, MIT) emballe tout ça dans le format OOXML que Word, LibreOffice, Pages et Google Docs savent ouvrir nativement. Pagination préservée. Téléchargement direct via file-saver.
Aucune requête sortante après le chargement initial de la page. Ouvrez l'onglet Network de vos DevTools, vous le verrez : 0 fetch, 0 XHR, 0 WebSocket. Le seul trafic, c'est le téléchargement du .docx que vous initiez, depuis votre disque vers votre disque.
Ce que ça fait bien
- PDF de texte natif (issus d'un Word, d'un LaTeX, d'un Google Docs export) : conversion fidèle.
- Documents administratifs courants (factures, attestations, contrats) : texte propre, titres identifiés, pagination respectée.
- CV, lettres de motivation, mémoires : récupération complète du texte éditable.
- Articles, cours, notes : structure préservée à 80–95 %.
Ce que ça ne fait pas bien (assumé)
- PDF scannés (image dans un PDF). Pas de texte à extraire, donc DOCX vide. Pour ce cas-là, utilisez plutôt pdf.tutoriel.be qui a un OCR Tesseract intégré.
- Tableaux complexes. Le texte est récupéré ligne par ligne mais sans structure de cellules. À refaire à la main dans Word ou Excel.
- Mise en page multi-colonnes. Les colonnes sont aplaties en flux linéaire. Pas idéal pour un journal ou un magazine.
- Formules math, schémas, équations. Hors scope. Si vous avez beaucoup de ça, exportez d'abord en LaTeX puis convertissez avec Pandoc en local.
Pour ces cas-là, je préviens dans l'UI : si la conversion locale ne suffit pas, un mode « serveur » arrive bientôt — LibreOffice headless dans un container hardened, qui retourne un DOCX de qualité quasi-Adobe. Vos fichiers transiteront 30 secondes sur soltana puis seront supprimés. Pas de stockage. Pas d'analytique. Opt-in seulement. Quand ce mode sera disponible, l'UI le proposera explicitement et vous l'activerez en connaissance de cause.
Comment c'est fait
Le frontend est en React + Vite + TypeScript. La conversion utilise pdf.js et docx, deux libs open source matures. Le bundle initial pèse environ 290 Ko gzipped (la majorité est dans les vendor chunks, donc cachée long-terme dans votre navigateur). Le worker pdf.js (~1,2 Mo) est chargé à la demande, pas au premier rendu.
Le déploiement est conforme au reste de la suite tutoriel.be : container Docker hardened (filesystem en lecture seule, capabilities Linux toutes droppées, utilisateur non-root, limites mémoire/CPU strictes), derrière Caddy avec certificat Let's Encrypt automatique, sur un serveur OVH en France. La Content Security Policy interdit toute connexion sortante sauf vers Google Fonts (et même ça, on peut s'en passer en self-hostant Inter — c'est sur la roadmap).
Essayer
Glissez un PDF, cliquez Convertir, récupérez le .docx. Pas de compte, pas de bandeau cookie, pas de « formule premium ». Si vous trouvez un bug ou un cas qui ne marche pas, une issue sur GitHub et je regarde.