FORMULAIRE PHP ET INSERTION AUTOMATIQUE DANS UN DOCUMENT RTF (WORD)
vilhjalms
Messages postés591Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention16 juillet 2009
-
28 juin 2007 à 18:11
ofillion
Messages postés9Date d'inscriptiondimanche 26 juillet 2009StatutMembreDernière intervention12 novembre 2009
-
12 nov. 2009 à 23:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 12 nov. 2009 à 17:52
Bonsoir,
pour ma part, j'ai utiliser ce code en fin de génération du document:
---------------------------------------------------------------
$SRC_FILE = $nom_fic .".rtf";
$filename = basename($SRC_FILE);
header("Content-Type: application/vnd.ms-word");
header("Content-Disposition: attachment; filename=$filename");
@readfile($SRC_FILE);
---------------------------------------------------------------
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 12 nov. 2009 à 14:01
Bonjour,
c'est une source qui a déjà 3 ans, je ne saurai te répondre, dsl
Slyders.
ofillion
Messages postés9Date d'inscriptiondimanche 26 juillet 2009StatutMembreDernière intervention12 novembre 2009 11 nov. 2009 à 23:09
La source de Slyders fonctionne nickel dans mon cas. Toutefois, j'aimerais aller un peu plus loin. Comme je ne veux pas que le nouveau fichier créé reste sur le serveur, je voudrais faire le traitement en 3 étapes :
1- Générer le fichier
2- Ouvrir le fichier automatiquement
3- Supprimer le fichier du serveur.
Est-ce possible d'automatiser le tout??? Pour le visiteur, je souhaite que tout soit transparent. Du genre il clique, le fichier s'ouvre et il peut l'enregistrer sur son disque, c'est tout.
Je fais des recherches et ta source est la seule que j'arrive à faire tourner.
Malheureusement, je ne comprends pas comment faire pour que toutes les lettres pour mes utilisateurs soit les unes à la suite des autres.
Tu expliques : "Il faut ecrire dans ton fichier RTF le code suivant ou tu veu: \par \page \hich\af0\dbch\af11\loch\f0"
Cependant, je ne comprends pas comment adapter ta source.
Peux-tu m'aider ?
Merci
cs_kirtap
Messages postés1Date d'inscriptionmercredi 27 août 2003StatutMembreDernière intervention 8 octobre 2008 8 oct. 2008 à 12:55
A propos du commentaire de vilhjalms le 28/06/2007, et dont j'ai fait l'essai:
<?php
// créer une référence à un nouveau composant COM (Word)
$word = new COM("word.application") or die("Can't start Word !");
Pour un source en PHP donc portable sur n'importe quelle plateforme et indépendant des logiciels installés, je n'étais pas trop chaud.
Avant de l'uploader sur mon serveur LAMP, j'ai quand même testé sur mon PC Wintel (XP Pro SP2, suite MS Office Pro, EasyPHP)...
-> BOUM, la fenêtre suivante apparaît: "Visual Studio Just-in-time Debugger
An unhandled win32 exception occured in Apache.exe [4604] (...)"
Quelqu'un peut il m'indiquer ce que ça donne sur MacOS ?
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 9 nov. 2007 à 19:05
oki
encore merci
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 9 nov. 2007 à 14:34
Merci pour le flood du code, pose ta question sur le Forum ça n'a rien avoir avec la source.
Sinon je sais pas dsl.
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 9 nov. 2007 à 11:16
VOILA UN EXEMPLE DE RESULTAT:
---------------------------------------------------------------------------------------Courrier
Mr NOM Prenom
10 RUE DE PARIS
PARIS
PARIS, le vendredi 9 novembre 2007,
Monsieur,
suite à notre communication ....
blabla
blabla 10 RUE DE PARIS blabla ... etc.
Votre Conseiller
Prenom NOM,
00.00.00.00.00
Mr NOM2 Prenom2
12 RUE DE PARIS
PARIS
PARIS, le vendredi 9 novembre 2007,
Monsieur,
suite à notre communication ....
blabla
blabla 12 RUE DE PARIS blabla ... etc.
Votre Conseiller
Prenom NOM,
00.00.00.00.00
---------------------------------------------------------------------------------------
Je veux passer sous word pour pouvoir proposer aux utilisateurs, de créer leurs fichiers WORD.
Donc mon nouveau "soucis": Tranformer un fichier "HTML" en fichier "DOC"?
Je continue de chercher de mon coté, si je trouve la solution je déposerai l'ensemble...
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 9 nov. 2007 à 10:57
Re
Je vais essayer d'etre clair ...
Je veux utiliser ton truc (sans etre péjoratif...) pour creer des courriers en publipostage:
C'est à dire:
1- Modèles de contenu de courrier, (mise en forme html)correspondant à la variable :
---------------------------------------------------------------------------------------
2- Modèle RTF pour la mise en forme du courrier:
Fichier Modele.RTF:
---------------------------------------------------------------------------------------
Le soucis, c'est que les balises html ne sont pas reconnues lors de l'insertion dans le fichier RTF
J'ai donc repris ta méthode avec un fichier ".txt"(contenant la mise en forme au format html) à la place du ".RTF" et cela fonctionne bien pour la création du document final sur le site. Je cherche maintenant à transformer un fichier ".html" en ".doc" pour pouvoir proposer le téléchargement de ce dernier.
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 8 nov. 2007 à 18:09
J'ai pas bien compris ton problème mais tu devrais enregistrer ton modèle en RTF et voir avec le bloc-note comment c'est écrit dedans pour faire ce que tu veu en PHP.
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 7 nov. 2007 à 13:24
Merci, Slyders pour ta reponse
j'ai un autre soucis,
la mise en forme ne correspond pas au modele
et surtout, une de mes variable est un paragraphe mis en forme avec des balises 'HTML'.
Comment les transformer?
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 6 nov. 2007 à 18:49
Il faut ecrire dans ton fichier RTF le code suivant ou tu veu: \par \page \hich\af0\dbch\af11\loch\f0
c'est le code pour faire un saut de page selon Word.
J'espère t'avoir un peu aidé... ^^
baborge77
Messages postés12Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention12 novembre 2009 6 nov. 2007 à 11:54
Bonjour à toutes & tous
C'est cool ton truc Slyders, et facilement parametrable...
Je voulais l'utiliser pour faire du publipostage avec PHP
Mais,
Ce que je n'arrive pas à faire sur le fichier final, c'est inserer un saut de page entre chaque courrier...
Si qqun a une solution a me proposer, je suis preneur?
Merci d'avance pour vos reponses, et encore merci à Slyders pour son source
cs_stay
Messages postés493Date d'inscriptionjeudi 7 juillet 2005StatutMembreDernière intervention24 mai 20174 21 août 2007 à 17:56
#surfjohakuth, en voici une très simple;
[# ]
#plus besoin d'input de type submit :-)
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 13 juil. 2007 à 09:44
Tu met tout ton code dans une page PHP, par exemple genere.php
Tu lui met les balises <? ...ton_conde... ?> et c tout.
avec ton image tu appel cette page.
[genere.php ]
si tu as des variables PHP a passer il faut:
et
<SCRIPT language=JavaScript>
function go()
{
window.location.href= "majcircuit.php?F1="+couleur[0]+"&F2="+couleur[1]+"&F3="+couleur[2];
}
</SCRIPT>
Mais il y a certainement des solutions plus simple. En tout cas je ne connais que sa.
surfjohakuth
Messages postés1Date d'inscriptionjeudi 12 juillet 2007StatutMembreDernière intervention12 juillet 2007 12 juil. 2007 à 18:01
Petite question: si on utilise pas un bouton mais une image sur laquelle on clique pour effectuer la même opértion, comment se transforme la condition "if(isset($_POST['nom_du_bouton'])) "??
Code de l'image:
echo "<form class="form" action="../bin/generate_devis_txt.php" method="GET">\n" ;
echo "\n" ;
echo "\n" ;
echo "\n" ;
echo "</form>\n" ;
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 29 juin 2007 à 17:11
un fichier RTF est un simple fichier texte normaliser donc aucun soucis, y a des multitude de tuto sur l'écriture de fichier et sur le remplacement de chaine de caractères.
En tout cas, ca devrait a vu de nez fonctionné.
Bien sur avant tu dois .
- verifier la presence de /chemin/vers/fichier et etre sur que c'est un fichier lisible
- etre sur que /chemin/vers/autres/fichier est modifiable et dans ce cas la etre sur aussi que le modifier n'a pas d'incidence.
- vérifier les valeurs que tu récuperes via $_GET, $_POST, $_SESSION etc.
- ...
Slyders
Messages postés300Date d'inscriptionmardi 12 octobre 2004StatutMembreDernière intervention 8 janvier 20102 29 juin 2007 à 10:32
vilhjalms: les objets COM nécéssite apache 2 et PHP 5 ce qui n'est pas forcément les contraintes d'environnement pour tout le monde. Comme pour mon cas ou je ne pouvais pas tout faire migrer.
coucou747 : Galère de trouver du code sur internet qui marche et des explication claire pour insérer du PHP dans des rtf et que cela soit transparent pour l'utilisateur. Qui plus est on a pas tous des bouquins PHP chez soi. Oui peut être dans Tuto...
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 28 juin 2007 à 18:54
euh... c'est un simple str_replace... tu mets ereg sans savoir ce que c'est... ni meme avoir lu la doc a ce sujet, sinon t'aurais vu que ca pouvait prendre un array comme argument...
dans mon livre sur le php, on a le meme code, mais en moins crade, ainsi, ca aurait plus sa palce dans un tuto que dans une source
1/10
vilhjalms
Messages postés591Date d'inscriptionmercredi 20 juillet 2005StatutMembreDernière intervention16 juillet 20092 28 juin 2007 à 18:11
Petites choses :
<?php au lieu de <?
if(isset($_POST['...']) && !empty($_POST['...'])){
[...]
}
Autrement pour les fichiers doc une solution suivant la configuration :
<?php
// créer une référence à un nouveau composant COM (Word)
$word = new COM("word.application") or die("Can't start Word !");
// afficher la version de Word en cours d'utilisation
echo "Loading Word, v. {$word->Version}";
// définir la visibilité de l'application sur 0 (faux)
// pour ouvrir l'application au premier plan, utiliser 1 (vrai)
$word->Visible = 0;
// créer un nouveau document dans Word
$word->Documents->Add();
// ajouter du texte au nouveau document
$word->Selection->TypeText("Testing 1-2-3...");
// enregistrer le document dans le dossier temp de Windows
$word->Documents[1]->SaveAs("comtest.doc");
// fermer la connexion au composant COM
$word->Quit();
// afficher un autre message à l'écran
echo "Check for the file...";
?>
12 nov. 2009 à 23:04
Merci, ca fonctionne à merveille !
12 nov. 2009 à 17:58
Pour la suppression du fichier sur le serveur, j'ai ajouter un sc ript sur la page d'envoi pour supprimer le fichier (s'il existe)...
--------------------------------------------------------------
<?php
if (file_exists($nom_fic .".rtf")){unlink($nom_fic.".rtf");}
?>
--------------------------------------------------------------
12 nov. 2009 à 17:52
pour ma part, j'ai utiliser ce code en fin de génération du document:
---------------------------------------------------------------
$SRC_FILE = $nom_fic .".rtf";
$filename = basename($SRC_FILE);
header("Content-Type: application/vnd.ms-word");
header("Content-Disposition: attachment; filename=$filename");
@readfile($SRC_FILE);
---------------------------------------------------------------
12 nov. 2009 à 14:01
c'est une source qui a déjà 3 ans, je ne saurai te répondre, dsl
Slyders.
11 nov. 2009 à 23:09
1- Générer le fichier
2- Ouvrir le fichier automatiquement
3- Supprimer le fichier du serveur.
Est-ce possible d'automatiser le tout??? Pour le visiteur, je souhaite que tout soit transparent. Du genre il clique, le fichier s'ouvre et il peut l'enregistrer sur son disque, c'est tout.
Merci beaucoup !
4 nov. 2008 à 14:16
Malheureusement, je ne comprends pas comment faire pour que toutes les lettres pour mes utilisateurs soit les unes à la suite des autres.
Tu expliques : "Il faut ecrire dans ton fichier RTF le code suivant ou tu veu: \par \page \hich\af0\dbch\af11\loch\f0"
Cependant, je ne comprends pas comment adapter ta source.
Peux-tu m'aider ?
Merci
8 oct. 2008 à 12:55
<?php
// créer une référence à un nouveau composant COM (Word)
$word = new COM("word.application") or die("Can't start Word !");
Pour un source en PHP donc portable sur n'importe quelle plateforme et indépendant des logiciels installés, je n'étais pas trop chaud.
Avant de l'uploader sur mon serveur LAMP, j'ai quand même testé sur mon PC Wintel (XP Pro SP2, suite MS Office Pro, EasyPHP)...
-> BOUM, la fenêtre suivante apparaît: "Visual Studio Just-in-time Debugger
An unhandled win32 exception occured in Apache.exe [4604] (...)"
Quelqu'un peut il m'indiquer ce que ça donne sur MacOS ?
9 nov. 2007 à 19:05
encore merci
9 nov. 2007 à 14:34
Sinon je sais pas dsl.
9 nov. 2007 à 11:16
---------------------------------------------------------------------------------------Courrier
Mr NOM Prenom
10 RUE DE PARIS
PARIS
PARIS, le vendredi 9 novembre 2007,
Monsieur,
suite à notre communication ....
blabla
blabla 10 RUE DE PARIS blabla ... etc.
Votre Conseiller
Prenom NOM,
00.00.00.00.00
Mr NOM2 Prenom2
12 RUE DE PARIS
PARIS
PARIS, le vendredi 9 novembre 2007,
Monsieur,
suite à notre communication ....
blabla
blabla 12 RUE DE PARIS blabla ... etc.
Votre Conseiller
Prenom NOM,
00.00.00.00.00
---------------------------------------------------------------------------------------
Je veux passer sous word pour pouvoir proposer aux utilisateurs, de créer leurs fichiers WORD.
Donc mon nouveau "soucis": Tranformer un fichier "HTML" en fichier "DOC"?
Je continue de chercher de mon coté, si je trouve la solution je déposerai l'ensemble...
9 nov. 2007 à 10:57
Je vais essayer d'etre clair ...
Je veux utiliser ton truc (sans etre péjoratif...) pour creer des courriers en publipostage:
C'est à dire:
1- Modèles de contenu de courrier, (mise en forme html)correspondant à la variable :
---------------------------------------------------------------------------------------
suite à notre communication ....
blabla
blabla blabla ... etc.
---------------------------------------------------------------------------------------
2- Modèle RTF pour la mise en forme du courrier:
Fichier Modele.RTF:
---------------------------------------------------------------------------------------
, le ,
,
,
---------------------------------------------------------------------------------------
Le soucis, c'est que les balises html ne sont pas reconnues lors de l'insertion dans le fichier RTF
J'ai donc repris ta méthode avec un fichier ".txt"(contenant la mise en forme au format html) à la place du ".RTF" et cela fonctionne bien pour la création du document final sur le site. Je cherche maintenant à transformer un fichier ".html" en ".doc" pour pouvoir proposer le téléchargement de ce dernier.
Fichier Modele.txt:
---------------------------------------------------------------------------------------
, le ,
,
,
---------------------------------------------------------------------------------------
Pour insérer les saut de page, j'ai utilisé du CCS:
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
8 nov. 2007 à 18:09
7 nov. 2007 à 13:24
j'ai un autre soucis,
la mise en forme ne correspond pas au modele
et surtout, une de mes variable est un paragraphe mis en forme avec des balises 'HTML'.
Comment les transformer?
6 nov. 2007 à 18:49
c'est le code pour faire un saut de page selon Word.
J'espère t'avoir un peu aidé... ^^
6 nov. 2007 à 11:54
C'est cool ton truc Slyders, et facilement parametrable...
Je voulais l'utiliser pour faire du publipostage avec PHP
Mais,
Ce que je n'arrive pas à faire sur le fichier final, c'est inserer un saut de page entre chaque courrier...
Si qqun a une solution a me proposer, je suis preneur?
Merci d'avance pour vos reponses, et encore merci à Slyders pour son source
21 août 2007 à 17:56
[# ]
#plus besoin d'input de type submit :-)
13 juil. 2007 à 09:44
Tu lui met les balises <? ...ton_conde... ?> et c tout.
avec ton image tu appel cette page.
[genere.php ]
si tu as des variables PHP a passer il faut:
et
<SCRIPT language=JavaScript>
function go()
{
window.location.href= "majcircuit.php?F1="+couleur[0]+"&F2="+couleur[1]+"&F3="+couleur[2];
}
</SCRIPT>
Mais il y a certainement des solutions plus simple. En tout cas je ne connais que sa.
12 juil. 2007 à 18:01
Code de l'image:
echo "<form class="form" action="../bin/generate_devis_txt.php" method="GET">\n" ;
echo "\n" ;
echo "\n" ;
echo "\n" ;
echo "</form>\n" ;
29 juin 2007 à 17:11
// version PHP4
ob_clean();
readfile('/chemin/vers/mon/fichier');
$content = ob_flush_content();
ob_end_clean();
$fp = fopen('/chemin/vers/autre/fichier', 'w');
fwrite($fp, str_replace(array('aRemplacer1','aRemplacer2'), array('remplace1', 'remplace2'), $content));
fclose($fp);
//version PHP5
file_put_content('/chemin/vers/autres/fichier', str_replace(array('aRemplacer1','aRemplacer2'), array('remplace1', 'remplace2'), file_get_contents('/chemin/vers/fichier')));
En tout cas, ca devrait a vu de nez fonctionné.
Bien sur avant tu dois .
- verifier la presence de /chemin/vers/fichier et etre sur que c'est un fichier lisible
- etre sur que /chemin/vers/autres/fichier est modifiable et dans ce cas la etre sur aussi que le modifier n'a pas d'incidence.
- vérifier les valeurs que tu récuperes via $_GET, $_POST, $_SESSION etc.
- ...
29 juin 2007 à 10:32
coucou747 : Galère de trouver du code sur internet qui marche et des explication claire pour insérer du PHP dans des rtf et que cela soit transparent pour l'utilisateur. Qui plus est on a pas tous des bouquins PHP chez soi. Oui peut être dans Tuto...
28 juin 2007 à 18:54
dans mon livre sur le php, on a le meme code, mais en moins crade, ainsi, ca aurait plus sa palce dans un tuto que dans une source
1/10
28 juin 2007 à 18:11
<?php au lieu de <?
if(isset($_POST['...']) && !empty($_POST['...'])){
[...]
}
Autrement pour les fichiers doc une solution suivant la configuration :
<?php
// créer une référence à un nouveau composant COM (Word)
$word = new COM("word.application") or die("Can't start Word !");
// afficher la version de Word en cours d'utilisation
echo "Loading Word, v. {$word->Version}";
// définir la visibilité de l'application sur 0 (faux)
// pour ouvrir l'application au premier plan, utiliser 1 (vrai)
$word->Visible = 0;
// créer un nouveau document dans Word
$word->Documents->Add();
// ajouter du texte au nouveau document
$word->Selection->TypeText("Testing 1-2-3...");
// enregistrer le document dans le dossier temp de Windows
$word->Documents[1]->SaveAs("comtest.doc");
// fermer la connexion au composant COM
$word->Quit();
// afficher un autre message à l'écran
echo "Check for the file...";
?>