Techniques
Cette section permet de regrouper un ensemble de techniques ou de scripts qui ont l'originalité d'arriver à résoudre une difficulté avec le moindre effort ou qui sont particulièrement efficaces...
Techniques /Générer à la volée un fichier Word en message MIME
- Créer un fichier Word à la volée depuis ASP en exploitant le format MIME:
Parceque c'est un format que les utilisateurs connaissent, et qu'il est souvent utilisé pour le publipostage,
les fichiers au format Word sont intéressant à créés sur le serveur et à afficher sur le poste client.
Il existe plusieurs façons de générer un document Word sur le serveur depuis ASP :
- Utiliser un composant
- Générer un flux HTML et fixer le type MIME du document
- Piloter l'application Word sur le serveur pour générer dynamiquement le fichier
- Créer directement un fichier au format MIME avec l'extention ".doc"
Présentement, cet article expliquera comment réaliser la quatrième technique en utilisant CDONT. Le problème de la première en effet, c'est le coût des outils utilisés : vérifier par vous même pour les produits afficher à gauche de la feuille, même si certains restent raisonnables et offrent des fonctionnalités que nous ne pourront pas reproduire avec notre technique.
La seconde solution quant à elle ne permet pas facilement d'intégrés des images dans le fichier généré;
La troisième solution pose le problème du logiciel à installer sur le serveur (cf:Création de fichier Excel à la volée en utilisant automation) :
- Manque de sécurité
- Performance réduite à cause du lancement out-of-process
- Une licence est à payer même si personne n'utilise le serveur
La technique présente est en faite extrêmement proche de celle utilisée afin de proposer des fichers HTML sous forme d'archive WEB (*.mht). Le corps du fichier HTML étant mis sous la forme de message mime par la dll CDONT :
set message = CreateObject("CDO.Message") set conf = CreateObject("CDO.Configuration") set message.Configuration = conf 'Création du message HTML à partir 'd'une page en ligne message.CreateMHTMLBody "http://www.google.com"
L'astuce consiste donc à renommer le fichier créé avec l'extention ".doc" et à changer le type MIME de la réponse au client afin de permettre au cas où son ouverture dans Word :
Response.ContentType = "application/msword"
L'exemple suivant vous montrera comment générer à la volée un fichier Word avant de l'envoyer au client sous la forme d'un fichier Word au format MIME. Par contre, il est à noter que cette méthode restera davantage pratique à utiliser lorsque aucun script javasscript n'apparait dans la page sinon Word le symbolisera comme lors de la création d'une page Web avec DreamWeaver. De même vous ne pourrez pas vous reposer sur une mise en page en pure CSS, vous devrez utiliser des tableaux :
<% dim message, conf, stream set message = CreateObject("CDO.Message") set conf = CreateObject("CDO.Configuration") set message.Configuration = conf 'Création du message HTML à partir 'd'une page en ligne message.CreateMHTMLBody "http://www.google.com" 'Récupération du contenu du message dans un flux set stream = message.GetStream() 'Sauvegarde du résultat sur le serveur stream.SaveToFile server.mapPath("google.doc") Stream.Close Set Stream = Nothing Response.buffer = true with response .Clear .ContentType = "application/msword" .Charset = "UTF-8" .AddHeader "Content-Disposition", _ "attachment;filename=google.doc" Set Stream = Server.CreateObject("ADODB.Stream") Const adTypeBinary = 1 Stream.Open Stream.Type = adTypeBinary Stream.LoadFromFile server.mapPath("google.doc") .BinaryWrite stream.Read 'Vider le contenu de la réponse contenu dans le buffer .Flush end with Stream.Close Set Stream = Nothing set message= nothing set conf=nothing %>
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'dypso'@'172.20.245.55' (using password: YES) in /mnt/110/sdb/3/1/dypso/include/tools.php on line 106
Impossible de se connecter : Access denied for user 'dypso'@'172.20.245.55' (using password: YES)