Page 1 sur 1

Création fichier word à la volée via PHP - Problème encodage

Posté : 23 juil. 2015, 11:06
par rem24
Bonjour à tous,

J'ai un souci à l'issue de la création d'un Word à la volée via script PHP :

Je ne voudrais plus qu'il y ait cette fenêtre à l'ouverture de Word qui stipule :

Choisissez le codage à utiliser pour rendre ce document visible
Codage de texte : etc....


Pourquoi affiche t-il ce message à votre avis ?

Mon code PHP pour la génération à la volée :

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

header('Content-Type: application/vnd.msword; charset=UTF-8');

// Il sera nommé message.doc
header('Content-Disposition: attachment; filename="message.doc"');

$mess = 'Bonjour\r\nVous êtes le profil que je recherche\r\nMon mail : @gmail.com\r\nCordialement Dom\r\n';
$mess = str_replace('\r\n', "
", $mess);

echo $mess;

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 23 juil. 2015, 11:18
par @rthur
Bonjour,

Peut être simplement parce que tu ne génères pas un fichier Word, mais juste un fichier texte avec une extension en .doc :-)

Si tu veux vraiment générer un .DOC, il faut passer par les objets COM d'Office et donc être sur un serveur Windows avec Office installé.
Si tu peux te satisfaire de générer un fichier .DOCX, ce que je te recommande, il existe plusieurs lirairies PHP qui pourront t'aider. Par exemple : https://phpword.codeplex.com/

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 23 juil. 2015, 11:29
par rem24
Merci pour ta réponse, je vais essayer la librairie.

Mon serveur tourne sur Linux donc pas de COM utilisable.

Bonne journée

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 23 juil. 2015, 11:43
par rem24
Rebonjour,

La librairie fonctionne bien mais j'ai un soucis :
Je souhaite proposer à l'internaute une fenêtre pour télécharger le document word généré car pour l'instant le fichier Word est seulement enregistré dans le répertoire sur serveur... Un paramétrage à faire pet-être ?

Merci Arthur pour ta précédente réponse ;)

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 06 août 2015, 18:27
par rem24
Bonjour,

Le librairie PHPWord fonctionne très bien pour créer des fichiers Word à partir d'une code PHP

Il me reste juste 1 souci :

Mon document Word affiche les \r\n au lieu des sauts de ligne.

Dans mon PHP générateur de word, j'ai remplacé les \r\n par des sauts comme ceci :
$mess = 'Bonjour
Vous êtes le profil que je recherche\r\n pouvons nous faire plus ample connaissance\r\nMon mail : [email protected]\r\nCordialement martine\r\n';

$mess = str_replace('\r\n', '
', $mess);


Mais cela ne marche pas.

Merci de votre aide ;-)

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 06 août 2015, 19:02
par @rthur
Bonjour,

De mémoire, il faut utiliser autant de addText() que de bloc de texte et phpWord fera des sauts à la ligne entre chacun.

##edit : c'est confirmé dans le bugtracker de phpWord avec une alternative proposée : https://github.com/PHPOffice/PHPWord/is ... t-57213228

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 06 août 2015, 20:53
par rem24
Bonsoir,

En faisant ceci :
$text = explode('\r\n', $mess);
foreach($text as $line)
{
$section->addText($line);
}
Ca marche bien !

Merci beaucoup

Re: Création fichier word à la volée via PHP - Problème encodage

Posté : 06 août 2015, 20:53
par rem24
Merci Arthur, le lien que tu as mis m'a aidé

Re: [RESOLU] Création fichier word à la volée via PHP - Problème encodage

Posté : 07 août 2015, 11:09
par rem24
Bonjour,

Comme je l'ai dit hier, mon fichier WORD se créé.

J'ai un problème quand je souhaite ouvrir le fichier sur mon PC :

Word m'affiche ceci :
Impossible d'ouvrir le fichier test.docx. Des problèmes ont été décelés dans son contenu.

Si je clique sur OK, il me demande ceci :
Word a trouvé du contenu illisible dans test.docx. Voulez-vous récupérer le contenu de ce document ? Si la source de ce document est fiable, cliquez sur OUI

Bref si je clique OUI, le contenu de mon document s'affiche quand même parfaitement.

Je n'ai pas envie que mes internautes aient ce message d'erreur Word.

Qu'en pensez vous ? Je suis bloqué sur ce souci.

Bien à vous,

Re: [RESOLU] Création fichier word à la volée via PHP - Problème encodage

Posté : 07 août 2015, 11:53
par @rthur
Ouvre le fichier avec un éditeur de texte et vérifie qu'il n'y ait pas du code HTML qui trainent (du genre un message d'erreur/warning/notice PHP)

Re: [RESOLU] Création fichier word à la volée via PHP - Problème encodage

Posté : 07 août 2015, 15:20
par rem24
Résolu : il fallait que je mette l'encodage de mon script PHP en ISO 8859-15.

Merci pour ton aide :-)

Bonne journée.