Les formats les plus simples à afficher nativement dans un site web (sans usine à gaz comme pdf.js) sont ceux que le navigateur gère directement ou presque.
1. Le grand gagnant : HTML
C’est de loin le format le plus facile et le plus propre.
- Un secrétariat peut exporter depuis Word (ou LibreOffice) en « Page web filtrée » ou « HTML ».
- Tu affiches simplement le contenu dans une
<div>ou dans un<iframe src="document.html">. - Avantages : responsive, searchable, accessible, léger, zéro bibliothèque.
- C’est ce que recommandent la plupart des administrations et sites officiels pour le contenu web.
2. Les images (PNG, JPG, WebP, SVG)
Très simple et très fiable.
- Export des pages en image (Word → PDF → images, ou capture d’écran, ou scan).
- Affichage avec un simple
<img src="page1.png">ou un carrousel. - Parfait pour les courriers officiels, attestations, documents scannés, formulaires signés.
- SVG est excellent pour les logos, organigrammes, schémas.
3. Texte brut (.txt) et CSV
.txt→ affiché dans un<pre>ou converti en paragraphes..csv→ très facile à transformer en tableau HTML (même sans librairie lourde).
4. Documents Office (.docx, .xlsx, .pptx) via visionneuses en ligne
Si le secrétariat tient absolument à rester en Word/Excel/PowerPoint, tu n’as pas besoin de convertir ni d’installer de librairie :
Microsoft Office Online Viewer (le plus propre) :
<iframe
src="https://view.officeapps.live.com/op/view.aspx?src=https://votresite.com/document.docx"
width="100%"
height="800px">
</iframe>
Google Docs Viewer (alternative) :
<iframe
src="https://docs.google.com/gview?url=https://votresite.com/document.docx&embedded=true"
width="100%"
height="800px">
</iframe>
Conditions :
- Le fichier doit être accessible publiquement (pas derrière un login).
- Fonctionne bien pour .docx, .xlsx, .pptx.
Comparaison rapide pour un secrétariat
| Format | Facilité d’affichage | Qualité / Fidélité | Recommandé pour | Complexité technique |
|---|---|---|---|---|
| HTML | Excellente | Très bonne | Courriers, comptes-rendus, notes | Aucune |
| Images | Excellente | Parfaite (visuel) | Documents signés, scans, formulaires | Aucune |
| .txt / CSV | Excellente | Basique | Listes, tableaux simples | Aucune |
| Office via Viewer | Bonne | Très bonne | Quand on veut garder le .docx | Très faible (iframe) |
| PDF natif | Moyenne | Excellente | Documents officiels figés | Faible (iframe/embed) |
Recommandation pratique pour un secrétariat
- Idéal : demander systématiquement l’export en HTML (ou au moins en PDF + version HTML).
- Pour les documents qui doivent rester « figés » et signés → images (ou PDF simple avec
<iframe>/<embed>natif, qui marche bien dans Chrome, Edge, Firefox aujourd’hui). - Si on veut absolument rester en Word → héberger le .docx et utiliser le viewer Microsoft.
Tu évites ainsi complètement pdf.js et les solutions lourdes.
C'est tout à fait normal que PDFium reste discret, car c'est un composant "sous le capot" que les éditeurs de navigateurs n' mettent pas vraiment en avant.
Pour faire simple, PDFium est la bibliothèque open-source (à l'origine développée par la société Foxit, puis rachetée et open-sourcée par Google) qui sert de moteur de rendu PDF dans Chromium, et donc dans tous les navigateurs basés dessus (Google Chrome, Microsoft Edge, Brave, etc.).
Contrairement à Firefox qui utilise PDF.js (une bibliothèque écrite entièrement en JavaScript qui tourne dans la page), Chrome et ses dérivés utilisent PDFium qui est écrit en C/C++ et directement intégré au niveau du code natif du navigateur. C'est pour cela que l'affichage des PDF est généralement plus direct et plus rapide dans Chrome : le navigateur délégue le travail à un sous-programme natif ultra-optimisé plutôt que d'exécuter du code JS pour redessiner chaque page sur un élément canvas.
Mais dans les deux cas, cela reste une rustine : que ce soit en C++ (PDFium) ou en JavaScript (PDF.js), le navigateur traite le PDF comme une pièce rapportée, un objet externe qu'il encapsule dans une visionneuse, et non comme un document web natif qu'il sait fusionner proprement dans le flux du HTML.
Ton idée est excellente et, techniquement, c'est une solution tout à fait viable qui est déjà utilisée dans certains domaines spécifiques. Ce que tu décris ressemble beaucoup au format CBZ (Comic Book Zip), qui n'est rien d'autre qu'une archive .zip contenant une série d'images (souvent au format PNG ou JPG) numérotées, que les liseuses affichent comme un document unique.
Pourquoi ta solution est pertinente :
- La fin de l'usine à gaz : Au lieu d'avoir un moteur complexe comme
pdf.jsqui doit recalculer les vecteurs, les polices et la mise en page en temps réel, le navigateur n'aurait qu'à afficher une image standard (<img>), ce qu'il fait nativement et parfaitement depuis trente ans. - Le formatage est préservé : Comme l'image est un "instantané" de la page, la mise en page, les signatures, les logos et les polices sont garantis identiques à l'original.
- Le côté "archive" : En zippant les pages, tu obtiens un fichier unique, facile à transporter, qui fonctionne exactement comme un fichier
.docx(qui est, pour rappel, un.zipcontenant des fichiers XML et des dossiers d'images).
Les outils qui font déjà cela :
Il existe des outils en ligne de commande, comme ceux basés sur ImageMagick ou Poppler, qui permettent de transformer un PDF en une suite d'images (page-001.png, page-002.png, etc.). Pour automatiser cela dans un ZIP, c'est un script simple de quelques lignes de code (Python, Bash ou PHP).
Pourquoi ce n'est pas le standard actuel :
Alors pourquoi les administrations n'utilisent-elles pas cela ?
- Le poids : Une image (bitmap) est beaucoup plus lourde qu'un fichier PDF (qui contient du texte vectoriel). Pour un document de 10 pages, le PDF fera quelques kilo-octets ou méga-octets, tandis qu'une série d'images haute définition peut peser dix fois plus lourd.
- L'accessibilité (le point critique) : Si tu transformes un document en image, tu perds le texte "sélectionnable". Un lecteur d'écran pour malvoyants ne pourra plus lire le document, on ne peut plus faire de "recherche par mot-clé" (Ctrl+F) dans le navigateur, et le texte ne peut plus être copié-collé.
- La qualité sur écran haute densité : Si tu ne prévois pas une résolution très élevée, l'image devient floue quand on zoome, contrairement au PDF qui reste net car il est vectoriel.
La solution idéale :
Pour que ta vision fonctionne et devienne un standard, il faudrait ce qu'on appelle un format hybride :
Un fichier .zip qui contient :
- Les images des pages pour l'affichage ultra-rapide et fidèle.
- Un fichier texte (JSON ou XML) caché dans le zip qui contient le texte extrait pour la recherche et l'accessibilité.
C'est exactement ce que font les formats modernes de lecture numérique (comme le EPUB). Si les administrations se mettaient à diffuser leurs documents en .epub plutôt qu'en PDF, le Web serait infiniment plus fluide, car le navigateur afficherait une image pour le rendu et lirait le fichier de texte à côté pour la recherche. Mais, comme tu l'as souligné, le changement d'habitude administrative est le plus gros obstacle.
Ton analyse est extrêmement perspicace et touche le point sensible de l'interopérabilité sur le Web. Pour répondre directement à ta question : le DOCX est, techniquement, une excellente solution de stockage et d'archivage, mais il est catastrophique pour le Web.
Voici pourquoi, malgré ton intuition très juste, le format DOCX ne peut pas remplacer le PDF ou le HTML pour la diffusion publique :
1. Pourquoi le DOCX est "piégé" dans son écosystème
Le format DOCX (Office Open XML) est, comme tu l'as noté, un fichier .zip contenant des fichiers XML pour la structure et des dossiers pour les images. C'est génial pour stocker. Mais :
- Le rendu est propriétaire : Le rendu d'un fichier DOCX dépend intégralement de l'interprétation faite par le logiciel qui l'ouvre (Microsoft Word, LibreOffice, Google Docs). Si tu publies un DOCX sur le Web, tu n'as absolument aucune garantie que l'utilisateur verra la même chose que toi. Chaque logiciel le "réinterprétera" à sa sauce, décalant les marges, remplaçant les polices ou cassant la mise en page.
- La lourdeur du XML : La structure XML du DOCX est d'une complexité délirante (pour gérer des millénaires d'historique de traitement de texte). Aucun navigateur Web ne peut "lire" nativement un DOCX sans une bibliothèque monstrueusement lourde qui devra recréer un mini-Word à l'intérieur de la page.
2. Le problème de la "lecture" sur le Web
Si les administrations publiaient du DOCX, ce serait pire que le PDF pour trois raisons :
- Sécurité : Les fichiers DOCX peuvent contenir des macros (scripts de programmation) qui sont des vecteurs de virus classiques. Le PDF est plus "passif" et donc plus sûr.
- Édition involontaire : Le but d'un document administratif publié (un budget, une délibération) est qu'il soit lu, pas modifié. Un DOCX invite à la modification, ce qui poserait un problème d'intégrité légale majeur.
- Performance : Pour afficher un DOCX, le navigateur devrait dézipper l'archive, analyser les centaines de lignes de XML et reconstruire la mise en page. C'est beaucoup plus lent que de demander à un moteur PDF d'afficher des coordonnées fixes.
3. Existe-t-il un convertisseur HTML vers DOCX ?
Oui, techniquement, c'est très facile. Comme le DOCX est une structure XML standardisée, des bibliothèques (comme PHPWord côté serveur ou des outils en ligne) peuvent transformer une page HTML en fichier DOCX.
Mais le résultat est souvent décevant : le HTML est très flexible (positionnement relatif), alors que le DOCX est très rigide (positionnement absolu). Convertir du HTML en DOCX, c'est un peu comme essayer de faire entrer un liquide dans un moule en fonte : on perd toute la fluidité du Web.
Le format idéal existe, mais il est snobé
Tu as mis le doigt sur une vérité : le format Web idéal, c'est le HTML lui-même. Si les administrations savaient produire du HTML propre :
- Il serait instantanément indexé par les moteurs de recherche.
- Il serait parfaitement accessible (lecture vocale, agrandissement de texte).
- Il serait rapide à afficher sans aucune "usine à gaz".
Pourquoi ne le font-ils pas ? Parce que le HTML demande de la maintenance. Une page HTML doit être testée à chaque mise à jour du navigateur. Un PDF ou un DOCX, eux, sont "jetés" sur le serveur une fois pour toutes. Les administrations préfèrent le confort de la "pièce jointe" (PDF) à la responsabilité du "contenu vivant" (HTML).
En résumé : le DOCX est un très bon format de travail, mais c'est un format "fermé". Le PDF est un format d'impression "figé". Le Web a besoin d'un format "vivant". Tant que les institutions privilégieront la facilité de production sur la pérennité et l'accessibilité du Web, nous resterons condamnés à jongler avec ces formats propriétaires.
C'est une excellente transition ! Tu passes du pire format (le DOCX rigide) au format le plus élégant et le plus intelligent pour le Web : l'ePub.
Techniquement, l'ePub est exactement ce dont le Web a besoin : c'est un fichier .zip qui contient des fichiers HTML standards, des feuilles de style CSS, des polices et des images. C'est du HTML packagé proprement.
Voici comment une secrétaire pourrait en produire un, et comment l'afficher simplement sur le Web.
1. Comment une secrétaire peut produire un ePub sans effort ?
Une secrétaire n'a pas besoin de coder. Elle peut continuer à utiliser son outil habituel : LibreOffice Writer (ou Microsoft Word).
- La méthode directe : Dans LibreOffice Writer, il suffit d'aller dans le menu Fichier > Exporter comme... > Exporter au format EPUB. Le logiciel se charge de transformer le texte, les images et la mise en page en un fichier
.epubvalide. - La méthode par l'outil de référence : Si le document nécessite une structure plus propre, les secrétariats peuvent utiliser Calibre (un logiciel gratuit et universel de gestion de livres numériques) ou l'extension EPUBLpress sur un navigateur, qui convertissent n'importe quel document ou page web en ePub en un clic.
2. Comment afficher un ePub simplement dans une page Web ?
Puisque l'ePub n'est fondamentalement qu'un ensemble de fichiers HTML et CSS compressés dans un ZIP, l'afficher dans une page web ne demande pas une usine à gaz comme PDF.js.
Il existe des bibliothèques JavaScript légères (comme EPUB.js) qui font un travail remarquable :
- Le script télécharge le fichier
.epub. - Il le décompresse "à la volée" dans le navigateur.
- Il injecte directement le code HTML et les images dans la page web, en respectant les feuilles de style CSS.
Contrairement au PDF qui est une image figée ou un dessin vectoriel lourd, l'ePub est du vrai texte fluide. Le navigateur l'affiche nativement comme n'importe quelle page web, ce qui permet :
- Un affichage instantané et ultra-rapide.
- Une adaptation parfaite à tous les écrans (du mobile au grand écran de PC, sans barre de défilement horizontale).
- Une accessibilité totale (recherche de texte, lecture vocale pour les malvoyants, modification de la taille des caractères à la volée).
Pourquoi l'administration boude l'ePub ?
L'ePub est le secret le mieux gardé de l'édition numérique. Si l'administration l'adoptait, tous nos problèmes de lecture de documents sur le Web disparaîtraient.
Mais l'administration raisonne encore avec la mentalité du papier : elle veut que le tampon, la signature et la ligne 42 du tableau soient exactement au même millimètre sur l'écran du citoyen que sur sa propre feuille A4. L'ePub, étant un format "fluide" (le texte coule et se réagence selon l'écran), refuse cette rigidité.
C'est tout le paradoxe : le Web est fluide, l'ePub est fluide, mais l'administration veut du figé. Et c'est cette contradiction qui nous impose des formats inadaptés.
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Visionneuse ePub Légère</title>
<!-- Inclusion de la bibliothèque EPUB.js depuis un CDN -->
<script src="[https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js](https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.5/jszip.min.js)"></script>
<script src="[https://cdn.jsdelivr.net/npm/epubjs/dist/epub.min.js](https://cdn.jsdelivr.net/npm/epubjs/dist/epub.min.js)"></script>
<style>
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 20px;
background-color: #f4f4f9;
color: #333;
}
h1 {
text-align: center;
font-size: 1.5rem;
}
#viewer {
width: 100%;
max-width: 800px;
height: 600px;
margin: 20px auto;
background: #fff;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
border-radius: 8px;
overflow: hidden;
}
.controls {
text-align: center;
margin-top: 15px;
}
button {
padding: 10px 20px;
margin: 0 5px;
font-size: 1rem;
cursor: pointer;
background-color: #007bff;
color: white;
border: none;
border-radius: 4px;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<h1>Mon Document ePub en Ligne</h1>
<!-- Conteneur où le livre va s'afficher -->
<div id="viewer"></div>
<!-- Boutons de navigation -->
<div class="controls">
<button id="prev">← Précédent</button>
<button id="next">Suivant →</button>
</div>
<script>
// Initialisation du livre ePub (remplace le lien par le chemin de ton fichier .epub)
var book = ePub("[https://s3.amazonaws.com/epubjs/books/moby-dick.epub](https://s3.amazonaws.com/epubjs/books/moby-dick.epub)");
// Rendu du livre dans le conteneur #viewer
var rendition = book.renderTo("viewer", {
width: "100%",
height: "100%"
});
// Affichage de la première page
var displayed = rendition.display();
// Gestion des boutons de navigation
document.getElementById("prev").addEventListener("click", function(e) {
book.package.metadata.direction === "rtl" ? rendition.next() : rendition.prev();
e.preventDefault();
}, false);
document.getElementById("next").addEventListener("click", function(e) {
book.package.metadata.direction === "rtl" ? rendition.prev() : rendition.next();
e.preventDefault();
}, false);
</script>
</body>
</html>
Tu as tout à fait raison de noter cette limite. L'exemple précédent utilisait un fichier de test (Moby Dick) qui est purement textuel, ce qui ne permet pas de vérifier comment la visionneuse gère les assets graphiques intégrés.
Pour tester une visionneuse avec des images, il est préférable d'utiliser un fichier ePub contenant des illustrations, des schémas ou des photos. Le projet Standard Ebooks est une excellente source : ils produisent des ePubs de très haute qualité, avec des images insérées proprement, des métadonnées complètes et une structure CSS exemplaire.
Si tu veux tester ta propre visionneuse avec un contenu riche, voici un lien vers un ePub illustré (extrait de leur bibliothèque) que tu peux substituer dans le code précédent :
[https://standardebooks.org/ebooks/arthur-conan-doyle/the-adventures-of-sherlock-holmes/downloads/arthur-conan-doyle_the-adventures-of-sherlock-holmes.epub](https://standardebooks.org/ebooks/arthur-conan-doyle/the-adventures-of-sherlock-holmes/downloads/arthur-conan-doyle_the-adventures-of-sherlock-holmes.epub)
Pourquoi cet exemple est meilleur pour tes tests :
- Intégration d'images : Ce fichier contient des illustrations d'époque. Tu pourras vérifier si ta bibliothèque (
EPUB.js) les affiche correctement sans décalage. - Structure CSS : Contrairement aux ePubs basiques, celui-ci utilise des feuilles de style CSS modernes pour positionner les images par rapport au texte.
- Réactivité : Tu verras comment le texte "flue" autour des images lorsque tu redimensionnes ton bloc
#viewer.
Ce que tu devras surveiller dans ton test :
Lorsque tu remplaceras l'URL dans le script, vérifie ces trois points :
- Le chargement des images : Si le CORS (Cross-Origin Resource Sharing) du serveur distant est bloqué, les images pourraient ne pas s'afficher. Si c'est le cas lors de tes tests, télécharge le fichier
.epubsur ton propre serveur et appelle-le en local :var book = ePub("ton_dossier/sherlock.epub");. - Le redimensionnement : Observe si l'image dépasse du cadre
#viewer. Si c'est le cas, tu peux ajouter une règle CSS simple dans ton<style>pour forcer les images à rester dans le conteneur :#viewer img { max-width: 100%; height: auto; } - La fluidité : C'est là que tu verras la supériorité de cette approche sur le PDF. Même si l'image est haute résolution, elle s'adaptera toujours à la largeur de ton bloc sans jamais nécessiter de barre de défilement horizontale ou d'outil de zoom complexe.
Est-ce que tu veux que je modifie le code HTML pour intégrer cette règle CSS de protection des images ?