IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

php et fichiers word doc


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut php et fichiers word doc
    Bonjour,

    Je suis confronté à un petit problème. Je récupère des infos dans un fichier xml que je dois parser dans un fichier doc qui sert de modèle.

    En gros le contenu du fichier doc est de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bla bla bla ###VARIABLEAPARSER### bla bla bla
    Donc je remplace la valeur à la place du pattern ###VARIABLEAPARSER###.

    Donc j'ouvre le fichier modèle en lecture et j'en récupère le contenu.
    Je récupère mes valeurs XML, et je remplace les pattern par les valeurs.
    J'ouvre ensuite un nouveau fichier en écriture et je colle le contenu.

    tout ça, ca fonctionne, mais quand je veux l'ouvrir sur word, il m'envoi bouler en me disant que le fichier est corrompu. Pourtant le contenu est le même hormis les pattern qui ont été remplacés par des valeurs.

    Existe t il une autre manière de faire hormis créer carrément un fichier doc complet avec php (trop lourd) ?

    J'espère que vous pourrez m'aider.

    Voilà le bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    /* TEST */
    		$handle = fopen(TEMPLATE_DIR . "template.doc",'r');
    		$handleW = fopen(TEMPLATE_DIR . "final.doc", "w");
    		$contenu = fread($handle,filesize(TEMPLATE_DIR . "template.doc"));
    		fclose($handle);
    		//echo $contenu;
     
    		$VARIABLE1 = cTools::array_search_recursive('VARIABLEAPARSER',$test);
     
    		$contenu = str_replace('###VARIABLEAPARSER###',$VARIABLE1,$contenu);
     
    		fwrite($handleW,$contenu);
    		fclose($handleW);
     
    		/* FIN TEST */

  2. #2
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    Bonjour,
    je ne sais pas à quel point le format .doc est nécessaire dans ce projet.
    Si il est indispensable : je n'ai pas encore d'idée précise.

    Par contre si le projet peut se passer du format natif .doc
    je viens de faire un test qui fonctionne bien :
    Dans word : "sauver sous" => rtf
    dans php : utiliser cette copie en rtf
    et le résulat semble correcte.

    d'un autre coté, j'ai effectué un autre test :
    en local :
    j'ai un fichier word .doc de 3 lignes
    je le ferme.
    je l'ouvre avec BBEDIT (editeur de code)
    je change 1 lettre, je sauve
    je le ré ouvre avec word
    et j'ai la même erreur que toi ...
    => ce n'est donc en rien un problème de php

    En espérant avoir donné une piste
    Pat

  3. #3
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    Oui, j'ai finalement fait en RTF. Je crée le modèle sur word en RTF, et je remplace les balises à l'intérieur par le contenu des variables

    Merci pour la réponse

  4. #4
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    Bon, finalement, ce n'est pas si top que ça. Si on modifie le modèle RTF dans word quelques temps après, je me suis rendu compte que word est capable de dissocier ma variable à parser à cause de ces ~#{ marquages de révision.

    Exemple: un code ###VARIBALE1### pourrait devenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ###}{\rtlch\fcs1 \af0 \ltrch\fcs0 \b\ul\lang1033\langfe1033\highlight7\langnp1033\insrsid4851368\charrsid6834058 VARIABLE1}{\rtlch\fcs1 \af0 \ltrch\fcs0 
    \b\ul\lang1033\langfe1033\langnp1033\insrsid1322241 ###
    Existe-t-il un moyen d'empêcher word d'écrire ces marquages sur le modèle ?

  5. #5
    Membre éprouvé
    Inscrit en
    Juin 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Juin 2009
    Messages : 104
    Par défaut
    c'est plutôt un problème de choix de séparateur / marqueur / délimiteur que un problème de Word.

    ### : ce n'est pas si bon (si exceptionnel ou statistiquement inutilisé) comme marqueur => je connais plein de gens qui l'utilise pour délimiter des commentaires par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ### START UPDATING CLIENT ###
    Tu devrais te trouver des délimiteurs beaucoup plus exceptionnel (le but étant de trouver une séquence informatiquement neutre, sémantiquement la plus improbable possible)
    un truc un peu fou comme par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -sepxxz-VARIABLEAPARSER-sepxxz-
    Si tu me comprends ?

  6. #6
    Membre éclairé
    Profil pro
    Expert technique
    Inscrit en
    Septembre 2003
    Messages
    328
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert technique

    Informations forums :
    Inscription : Septembre 2003
    Messages : 328
    Par défaut
    non rien à voir. J'ai tout essayé. D'ailleurs un test simple que tu peux faire chez toi:

    - Ouvre word et crée un fichier contenant:
    bla bla bla ###MAVARIBALE1### bla bla bla
    - Enregistre le en RTF
    - Ferme le document

    --> Vérifie le contenu du fichier généré. tu devrai avoir un truc du genre:
    {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5841366 ###MAVARIABLE1###}

    - Rouvre le RTF
    - Modifie MAVARIABLE1 par ###MAVARIABLE2###
    - Enregistre
    - Ferme le document

    --> Vérifie le contenu du fichier généré. tu devrai avoir un truc du genre:
    {\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5841366 ###MAVARIABLE}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid11410595 2}{\rtlch\fcs1 \af31507 \ltrch\fcs0 \insrsid5841366 ###}

    Là tu vois bien que word à ajouter du code entre ###MAVARIABLE et le 2 et entre le 2 et le ###

    Tu peux faire le teste avec n'importe quel pattern unique que tu veux, word a toujours le dernier mot ! Je cherche un moyen de désactiver l'enregistrement des modifications effectués sur le document.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Perte de fichier Word .doc et .docx
    Par darwin000 dans le forum Word
    Réponses: 1
    Dernier message: 30/10/2011, 19h13
  2. Lire, écrire un fichier Word (.DOC)
    Par haaa11 dans le forum Documents
    Réponses: 3
    Dernier message: 23/11/2008, 20h07
  3. Réponses: 1
    Dernier message: 26/02/2008, 10h08
  4. Lire un fichier Word (.doc)
    Par yiuyiu dans le forum MATLAB
    Réponses: 1
    Dernier message: 26/07/2007, 12h22
  5. [COM] Extraire le texte d'un fichier "word" (.doc) avec
    Par ptikiwi dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/06/2006, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo