Publier un nouveau sujet Répondre au sujet  [ 10 messages ] 
[RESOLU] Ajout texte dans fichier word [mode console] 
Auteur Message
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message [RESOLU] Ajout texte dans fichier word [mode console]
Hello,

Je cherche à modifier des fichiers .doc automatiquement:
* Le fichier modèle se trouve sur Linux
* Le fichier est traité par un script (copie, placement, renommage, etc.)
* Les informations à insérer : fichier bdd access que j'exporte en csv sur Linux

J'ai essayé un sed dessus, mais même après réparation du fichier, le texte modifié n'apparaît pas. Cependant la modification a passé (visible dans notepad++ ou le bloc note).

La modification par vim, me donne le même problème.
Un cat dessus me transforme ma console en console CVNI (voir OVNI)...

Est-ce que quelqu'un aurait une solution, un bout de piste, un lien, ou autres, concernant la modification de ces fichiers word depuis une console, ou depuis un script ?

(le fichier comporte des parties de formulaire, donc je ne peux pas exporter le document dans un autre format...)


Dernière édition par Heldwin le 04 Novembre 2009, 20:31, édité 1 fois au total.



02 Novembre 2009, 13:26
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
J'ai lu un truc concernant la modification en php par des echo et autres.

Peut-être un script php ? vais essayer


02 Novembre 2009, 13:54
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
Avec un script php ça marche bien (fopen, fread, fwrite, str_replace)-

Je dois faire d'autres tests, pour voir si je peux faire tout ce que je veux.

Cependant, la modification d'un fichier .doc par OOo rend le truc inutilisable ...
J'ai perdu pas mal de temps à cause de ça ...

-> str_replace ne trouvait plus le texte à modifier ...


02 Novembre 2009, 15:29
Profil

Inscrit le: 26 Octobre 2009, 19:03
Messages: 23
Message Re: [mode console] Ajout texte dans fichier word
Je suppose que tu parles du format docx et pas du format doc de base ?

Regarde ça : http://blog.phppro.fr/?post/2009/04/18/ ... simplement


02 Novembre 2009, 15:32
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
Je n'utilise pas les docx, d'ailleurs tous les docx qui passent entre mes mains sont transformés en .doc ^^
Et j'en profite pour encourager fortement les gens à ne pas utiliser le format .docx ...

Donc, je parle bien des .doc


02 Novembre 2009, 15:43
Profil

Inscrit le: 26 Octobre 2009, 19:03
Messages: 23
Message Re: [mode console] Ajout texte dans fichier word
Heldwin a écrit:
Je n'utilise pas les docx, d'ailleurs tous les docx qui passent entre mes mains sont transformés en .doc ^^
Et j'en profite pour encourager fortement les gens à ne pas utiliser le format .docx ...

Donc, je parle bien des .doc


Sauf que le docx a quand même un semblant de "format libre" ce qui fait que la modification est plus simple. (http://en.wikipedia.org/wiki/Office_Open_XML)

Je dis pas que j'aime bien le docx je préfére 100 fois le odt (ou pdflatex) mais quand les gens de MS Windows s'amusent à faire un semblant de format modifiable sans trop de problème à la main autant s'amuser avec :mrgreen:


02 Novembre 2009, 16:02
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
Oui, mais pour l'instant le docx, docm et autres, sont illégaux il me semble ^^
(aux USA tout du moins...)

Et je n'utilise pas Office 2007, de plus les conversions MS docx -> doc sont hasardeuses.
Et de même pour l'addon pour lire des docx sur Office XP/2003...

Donc pour l'instant je vais en rester aux .doc, même si pour l'instant je rencontre quelques problèmes technique pour modifier du texte qui n'a pas le même nombre de caractère...

Peut-être jouer sur les espaces ? En mettre un nombre suffisant pour le texte à remplacer:
<REMPLACEMENT TEXTE > <------ il y a plein de caractères d'espacement qui s'affichent pas

Et insérer du texte en complétant les espaces par concaténation dans une boucle while, après avoir calculer la différence de caractères ?

* $diff_car = strlen($texte) - strlen($new_texte); # 23 caractères par exemple
* $i = 0; while($i < $diff_car) { $new_texte = $new_texte . " "; $i++; }

-> Le texte remplacé<espace*23>

Il y a pas un autre moyen ? lol ...

EDIT:

En tout cas comme ça, ça marche ... Tant que je modifie pas le .doc de modèle sous OOo...


02 Novembre 2009, 16:08
Profil

Inscrit le: 26 Octobre 2009, 19:03
Messages: 23
Message Re: [mode console] Ajout texte dans fichier word
Pas trop habitué avec le php mais un
Code:
\


Ca prend pas en compte l'espace automatiquement ?


02 Novembre 2009, 18:00
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
J'ai pas compris où tu voulais en venir :)

Un \ ? Je ne parle pas de caractère d'échappement, mais de caractère d'espacement :)

Durant mes testes, et le code que j'ai trouvé/adapté, si je remplace:

1) MONTEXTE en MON TEXTE , ça rend le document .doc illisible (8 caractères != 9).
2) MON TEXT en LEXEMPLE , ça fonctionne (8 = 8).
3) CE TEXT (suivi de 10 espaces) en TRUC MACHIN CHOSE (sans aucun espace après, car 17-(10+7) = 0), ça fonctionne.

Ce n'est pas un problème d'espace en lui-même, mais du nombre d'espace à rajouter pour faire concorder le nombre de caractères entre l'ancien et le nouveau.

Ca nécessite de mettre en forme le modèle avec les espaces et des champs prédéfinis à modifier, et espérer qu'aucun texte à modifier ne sera plus grand que l'ancien texte + les espaces....

C'est pour ça que si quelqu'un connait de meilleur fonction de modification PHP (ou autres) pour des modifications de fichier .doc, je suis preneur :)

(les COM ne me conviennent pas, car je veux pas de Word sur mon serveur !).


02 Novembre 2009, 18:23
Profil
Avatar de l’utilisateur

Inscrit le: 20 Octobre 2009, 10:11
Messages: 83
Localisation: Switzerland
Message Re: [mode console] Ajout texte dans fichier word
Bon bah, après avoir testé, et profité pour changer pas mal de trucs dans mes fichiers et dans la conception des transferts/traitements ... , tout fonctionne :)

Mais en plus de: fopen, fread, fwrite, str_replace et fclose, j'ai dû utiliser: utf8_decode et substr, pour des problèmes d'accents et de caractère de fin de ligne pour les insertions linux -> windows/word, ainsi que pour les passages de variables bash -> php.

C'est un peu du bricolage je pense, mais bon...

(en passant, substr fonctionne aussi dans bash avec expr, sans passer par awk/gawk...)


04 Novembre 2009, 20:31
Profil
Afficher les messages publiés depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 10 messages ] 


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum

Rechercher pour:
Sauter vers:  
cron



Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Forum style by Vjacheslav Trushkin for Free Forum/DivisionCore.
Traduction réalisée par Maël Soucaze © 2009 phpBB.fr