FORMULAIRE PHP ET INSERTION AUTOMATIQUE DANS UN DOCUMENT RTF (WORD)

vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 - 28 juin 2007 à 18:11
ofillion Messages postés 9 Date d'inscription dimanche 26 juillet 2009 Statut Membre Dernière intervention 12 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.

https://codes-sources.commentcamarche.net/source/43277-formulaire-php-et-insertion-automatique-dans-un-document-rtf-word

ofillion Messages postés 9 Date d'inscription dimanche 26 juillet 2009 Statut Membre Dernière intervention 12 novembre 2009
12 nov. 2009 à 23:04
Génial !

Merci, ca fonctionne à merveille !
baborge77 Messages postés 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 novembre 2009
12 nov. 2009 à 17:58
Re,

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");}
?>

--------------------------------------------------------------
baborge77 Messages postés 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 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és 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 9 Date d'inscription dimanche 26 juillet 2009 Statut Membre Dernière intervention 12 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.

Merci beaucoup !
Utilisateur anonyme
4 nov. 2008 à 14:16
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és 1 Date d'inscription mercredi 27 août 2003 Statut Membre Derniè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és 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 novembre 2009
9 nov. 2007 à 19:05
oki

encore merci
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 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és 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 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 :
---------------------------------------------------------------------------------------

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:
---------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 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és 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 12 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 12 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és 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
21 août 2007 à 17:56
#surfjohakuth, en voici une très simple;

[# ]

#plus besoin d'input de type submit :-)
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 1 Date d'inscription jeudi 12 juillet 2007 Statut Membre Dernière intervention 12 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és 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 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.

// 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.
- ...
Slyders Messages postés 300 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 8 janvier 2010 2
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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
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...";
?>