Processus WinWord ne se ferme pas - PHP - Programmation
Marsh Posté le 06-04-2006 à 18:39:47
J'ai écrit un code presque identique, c'est marrant.
... Mais, j'ai eu le même problème, et ce n'était pas drôle.
Je l'ai finalement résolu en enlevant com_load_typelib('Word.Application');
et en ajoutant com.autoregister_typelib = true dans PHP.INI.
C'était avec PHP4.3.3. Cependant, je ne sais pas si ça marche aussi avec une version plus récente (et d'ailleurs, cela m'intéresserait de le savoir).
Marsh Posté le 06-04-2006 à 19:20:28
olivthill a écrit : J'ai écrit un code presque identique, c'est marrant. |
Bah écoute je test ca dès demain au taf et j'te dit quoi
Merci!
Marsh Posté le 07-04-2006 à 07:58:23
Et la tu te fais detruire par tes clients, qui avaient un courrier word en cours de modification
Marsh Posté le 07-04-2006 à 07:59:11
Ca marche le com.autoregister_typelib = true dans PHP.INI
Merciiii !!
Marsh Posté le 07-04-2006 à 08:12:18
Sebastien a écrit : Et la tu te fais detruire par tes clients, qui avaient un courrier word en cours de modification |
Oui faut mieu évité lol!
Marsh Posté le 07-04-2006 à 10:03:51
Sebastien a écrit : Et la tu te fais detruire par tes clients, qui avaient un courrier word en cours de modification |
Ah vi, mais je pensais que word était ouvert sur le serveur donc bon
en plus j'y aurait été a la bourrin,
lorsque tu ouvres word tu recupère un pid, puis tu kill via le pid.
hummm koi ke cette solution est trop bourrin
Marsh Posté le 07-04-2006 à 10:20:14
ben si, word est ouvert sur le serveur puisque c'est un script php...
Marsh Posté le 07-04-2006 à 19:20:23
Vi c'est sur le serveur, mais si deux gars ouvrent des devis à très peu d'intervalle ca risquera de blatter je pense! De toute ca marche la solution de olivthill!
Marsh Posté le 06-04-2006 à 15:31:03
Bonjour,
j'ai ce code qui me permet d'ouvrir un document Word, de modifier des champs dans celui-ci par des variables récupérées dans une base de données, d'enregistrer le document, et ensuite grace à un header de l'affiché sur le client
$type = $_POST['type']; // on récupére le type du contrat type
$filename = "$path_contrat_type/$type"; // Adresse du contrat
// pas de limite de temps
set_time_limit(0);
// Pas de paramétres requis
$empty = new VARIANT();
// Chargement de la librairie
com_load_typelib('Word.Application');
// Création de l'object
$word = new COM('word.application') or die('Word n\'est pas installé');
echo "Veuillez patientez... Chargement de Word\n";
$word->Visible = 0;
// Ouvre le document
$word->Documents->Open($filename);
// Remplacement des variables
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'SNCF_ENT_ETAB');
$word->Selection->TypeText($nom);
$word->Selection->GoTo(wdGoToBookmark,$empty,$empty,'SNCF_ENT_TELFAX');
$word->Selection->TypeText($tel_fax);
... // etc..
$output_devis = "$path_contrat/$num_devis.doc"; // Fichier doc temporaire
$word->Documents[1]->SaveAs($output_devis);
$word->Documents[1]->Close(); // Fermer et liberer la mémoire
$word->Documents->Close();
$word->Quit($empty,$empty,$empty);
$word->Release();
$word = null;
unset($word);
Tout marche niquel, mais le processur WinWord continu de tourner sur le serveur, et à chaque lancement, un processus WinWord suplémentaire est crée, et n'est pas fermé
On m'as dit d'enlever com_load_typelib('Word.Application'); mais si j'enléve cette ligne, les champs ne sont remplacés et les variables sont toutes ajoutées audébut du document Word!!
Help please
Message édité par LouyZ le 06-04-2006 à 15:31:30