Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1158 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Exporter fichier .rtf en php et ouverture avec libreoffice writer

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Exporter fichier .rtf en php et ouverture avec libreoffice writer

n°2363286
qdplay
Posté le 29-09-2020 à 10:09:25  profilanswer
 

Bonjour,
 
Je cherche à faire du publipostage en PHP sans télécharger de library supplémentaire type PHPWord.
Du coup je passe par du .rtf.
Dans libreoffice, j'enregistre mon fichier modèle, qui était en odt à la base, en rtf.
 
J'arrive ensuite à obtenir un fichier qui me convient avec le code suivant :
 

Code :
  1. $envoi_reception = file_get_contents('lefichier.rtf');
  2. $envoi_reception = str_replace('#type','TITI',$envoi_reception);
  3. $monfichier = fopen('creation.txt', 'w+');
  4. fputs($monfichier, $envoi_reception);
  5. fclose($monfichier);
  6. rename("creation.txt", "courrier_contact.rtf" );


 
 
Le fichier courrier_contact.rtf se crée dans mon projet sous Eclipse. Et quand je clique dessus dans mon projet il s'ouvre nickel avec libreoffice. Et #type a bien été remplacé par TITI.
 
Maintenant, je voudrais offrir à l'utilisateur la possibilité de télécharger le fichier et l'ouvrir avec libreoffice pour le modifier.
Donc j'ai rajouté le code suivant :
 

Code :
  1. header('Content-Type: application/rtf');
  2. header('Content-Disposition: attachment; filename="courrier_contact.rtf";');
  3. readfile("courrier_contact.rtf" );


 
 
Et là quand j'ouvre le fichier je n'obtiens pas du tout le même résultat que précédemment. J'obtiens un truc dans ce style:
 
{\rtf1\ansi\deff3\adeflang1025 {\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Liberation Serif{\*\falt Times New Roman};}{\f4\froman\fprq2\fcharset0 Calibri;}
 
 
Pourriez-vous m'aider svp ?

mood
Publicité
Posté le 29-09-2020 à 10:09:25  profilanswer
 

n°2363289
rufo
Pas me confondre avec Lycos!
Posté le 29-09-2020 à 10:20:24  profilanswer
 

Il t'ouvre le fichier en mode texte j'ai l'impression. T'es sûr que c'est le bon content-type ?
Question bête : pourquoi tu passes par la création d'un fichier txt intermédiaire ? Pourquoi tu ne fais pas le find/replace directement dans le rtf et tu sauvegardes le résultat dans un nouveau fichier rtf :??:


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2363353
qdplay
Posté le 29-09-2020 à 15:18:26  profilanswer
 

A vrai dire j'ai copié du code sur internet. Le gars passait par un fichier txt alors je me suis pas trop posé de question. D'autant que le résultat était bon. J'ai essayé d'enlever le passage par le .txt comme tu suggères et ça fonctionne aussi. Mais ca ne résout pas mon problème au moment de l'export.
Concernant le content type, j'en ai essayé plusieurs: rtf, msword et vnd.oasis.opendocument.text. A chaque fois le résultat est le même au moment de l'export.

n°2363384
rufo
Pas me confondre avec Lycos!
Posté le 29-09-2020 à 17:50:44  profilanswer
 

Oui, effectivement, ça pourrait expliquer pourquoi le navigateur ne considère pas le fichier comme un rtf "normal" mais affiche son contenu brut.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2363411
qdplay
Posté le 30-09-2020 à 08:14:42  profilanswer
 


 
Voici le contenu complet de mon fichier php :
 

Code :
  1. <?php
  2. $envoi_reception = file_get_contents('non respect + lettre option.rtf');
  3. $envoi_reception = str_replace('#type','TITI',$envoi_reception);
  4. $monfichier = fopen('courrier_contact.rtf', 'w+');
  5. fputs($monfichier, $envoi_reception);
  6. fclose($monfichier);
  7. header('Content-Type: application/rtf');
  8. header('Content-Disposition: attachment; filename="courrier_contact.rtf";');
  9. readfile('courrier_contact.rtf');
  10. ?>


 
Comme tu vois il n'y a aucun espace ni ligne vide.
J'ai essayé de rajouter manuellement un '<' au debut du fichier mais ça ne change rien.

n°2363415
qdplay
Posté le 30-09-2020 à 09:50:44  profilanswer
 

J'avais essayé octetstream aussi mais ça ne fonctionnait pas non plus.  
Finalement j'ai réussi à obtenir ce que je voulais avec un code plus simple et je récupère directement en .odt.
Voici le code pour ceux que ça intéresse :
 

Code :
  1. <?php
  2. $fichier_edit = file_get_contents('non respect + lettre option.rtf');
  3. $fichier_edit = str_replace('#type','TITI',$fichier_edit);
  4. header('Content-Type: application/rtf');
  5. header('Content-Disposition: attachment; filename="courrier_edite.odt";');
  6. echo $fichier_edit;
  7. ?>


 
Merci pour votre aide en tout cas. :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Exporter fichier .rtf en php et ouverture avec libreoffice writer

 

Sujets relatifs
Ouvrir fichier .odb avec PythonRécupérer date de déplacement d'un fichier
[VBA] UPnP : « Lire sur l’appareil » : comment pousser un fichier?ouverture de fichier en python 3 : erreur
[POWERSHELL]Creation fichier ps1Recuperation des données d'un fichier texte
Exporter une feuille excel vers un nouveau classeur en filtrantMacro copie vers un autre fichier
Script Copie de fichier avec exclusion de certain fichier 
Plus de sujets relatifs à : Exporter fichier .rtf en php et ouverture avec libreoffice writer


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR