Génération de documents Word côté serveur [Fermé]

Signaler
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
-
 rubinse -
Bonjour,

mon site web doit générer des documents Word côté serveur.

La solution retenue a été de générer du HTML contenant des balises et CSS spécifiques Word.
Ça marche assez bien, y compris avec des choses comme les sauts de page.
Exemple:

Ce code html: http://sebsauvage.pastebin.com/VbEQYkPQ
Donne ceci une fois ouvert dans Word: https://i.imgur.com/9o211.png


Mais j'ai un soucis: Je n'arrive pas à insérer une table des matières.

Je m'arrache les cheveux sur l'horreur du code HTML généré par Word
(et même la documentation officielle de Microsoft n'aide pas :
https://docs.microsoft.com/en-us/previous-versions/office/developer/office2000/aa155477(v=office.10)?redirectedfrom=MSDN )

Avez-vous déjà réussi ?

6 réponses

Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 259
Bon plutôt que continuer à philosopher seul dans cette discussion, j'ai créé une page sur mon wiki et je continue là-bas:
https://sebsauvage.net/wiki/doku.php?id=word_document_generation
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60553 internautes nous ont dit merci ce mois-ci

Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 259
Bon je me répond à moi-même.


Voici le code (quasi-minimal) pour insérer une table des matières en HTML MS Office:

<p class=MsoToc1> 
<!--[if supportFields]> 
<span style='mso-element:field-begin'></span> 
TOC \o "1-3" \u 
<span style='mso-element:field-separator'></span> 
<![endif]--> 
<span style='mso-no-proof:yes'>Table des matières - Faites un clic-droit -> Mettre à jour les champs</span> 
<!--[if supportFields]> 
<span style='mso-element:field-end'></span> 
<![endif]--> 
</p>


Ça marche très bien. L'utilisateur doit juste faire "Clic-droit" > "Mettre à jour les champs".

Voilà ce que ça donne:
https://i.imgur.com/ffbtQ.png
https://i.imgur.com/lXxbo.png
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 259
Et si vous cherchez les options du champ dynamique "TOC", c'est là:
http://office.microsoft.com/en-us/word-help/field-codes-toc-table-of-contents-field-HP005186201.aspx
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 259
Notez que ces documents générés peuvent être renommés en .doc et Word les ouvrira sans aucun problème.

Il est également possible d'inclure des macros (je ne sais plus comment, mais j'ai déjà vu ça.)
Messages postés
32840
Date d'inscription
mercredi 29 août 2001
Statut
Modérateur
Dernière intervention
21 octobre 2019
15 259
Bon pour continuer mon investigation: L'utilisation d'entête et pieds de page fonctionne, mais il est nécessaire de les placer dans des fichiers html extérieurs au corps du document (sinon ils apparaissent en copie en fin de document).

Il en va de même pour les images.

Conséquence: il faut générer un fichier mhtml et non un seul fichier html.

mhtml n'est rien d'autre qu'un simple fichier MIME 1.0 contenant les différents fichiers html (Microsoft Office HTML) et les images.
Renommé en .doc, Word l'ouvre comme une fleur.

Je mettrai des exemples quand j'aurai avancé (ici ou sur mon wiki).

Pour résumer: C'est un peu chiant (plusieurs fichiers à créer, utiliser du code HTML spécifique à MS Word et créer un fichier MIME), mais c'est réalisable: On peut générer des fichiers Word côté serveur sans utiliser Word.
Bonjour,

Je rencontre un probleme lors de la génération du word,

la génération se passe tres bien mais il insert plusieurs ligne dans le texte génerer,

vous avez une idée?

Merci pour votre réponse

Fabrice