begin process at 2010 03 22 09:19:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > ODTPHP - UPDATE POUR PHP 5.2.7 ET +

ODTPHP - UPDATE POUR PHP 5.2.7 ET +


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :openoffice, odtphp, template Niveau :Initié Date de création :30/03/2009 Date de mise à jour :30/03/2009 19:57:49 Vu / téléchargé :2 078 / 127

Auteur : stailer

Ecrire un message privé
Commentaire sur cette source (12)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
La source odtPHP développée par Julien PAULI et Cyril PIERRE de GEYER est très intéressante. Elle permet d'utiliser un document .odt comme "modèle" et de nourrir des variables à l'intérieur comme le ferait un moteur de templates.

Le problème est qu'à partir de PHP5.2.7 et supérieur la méthode de Zip a changé et ne fonctionne plus.
Les auteurs n'ayant pas proposé de solution dans leur source pour le moment, je propose donc cette modification de leur code afin de ne plus avoir de souci.

J'avais également eu des problèmes pour afficher des images, mais la aussi c'est résolu.

Source

  • <?php
  • require_once 'lib/Odf.php';
  • require_once 'lib/Segment.php';
  • require_once 'lib/SegmentIterator.php';
  • require_once 'lib/Createzip.php';
  • $odf = new Odf('./tutoriel1.odt');
  • $odf->setVars('titre', 'Bonjour tout le monde');
  • $odf->setVars('message', 'Soyez les bienvenus');
  • $j=1;
  • $module = $odf->setSegment('modules');
  • while ($j < 15) {
  • $i = 1;
  • if ($j == 1)
  • $module->setImage('TitreModule','./mysql.jpg');
  • else
  • $module->setVar('TitreModule', 'Titre de module' . $j);
  • while ($i < 20) {
  • $module->details->detail('Anaska is the best Open Source training center. It rocks ! ' . $i);
  • $dates = $module->details->dates;
  • $dates->setVar('infodate', date('d/m/Y h:i:s').' bcl:'.$i);
  • $dates->setImage('date', './contacts.png');
  • $i ++;
  • $module->details->merge();
  • }
  • $j ++;
  • $module->merge();
  • }
  • $odf->mergeSegment($module);
  • $odf->setImage('image','./mysql.jpg');
  • $odf->setImage('image2','./Excel20073D.png');
  • $odf->saveToDisk('generate.odt');
  • $odf->getZip()->forceDownload('generate.odt');
  • ?>
<?php
require_once 'lib/Odf.php';
require_once 'lib/Segment.php';
require_once 'lib/SegmentIterator.php';
require_once 'lib/Createzip.php';

$odf = new Odf('./tutoriel1.odt');

$odf->setVars('titre', 'Bonjour tout le monde');
$odf->setVars('message', 'Soyez les bienvenus');

$j=1;
$module = $odf->setSegment('modules');
while ($j < 15) {
    $i = 1;

    if ($j == 1)
        $module->setImage('TitreModule','./mysql.jpg');
    else
        $module->setVar('TitreModule', 'Titre de module' . $j);
        
    while ($i < 20) {

        $module->details->detail('Anaska is the best Open Source training center. It rocks ! ' . $i);

        $dates = $module->details->dates;
        $dates->setVar('infodate', date('d/m/Y h:i:s').' bcl:'.$i);
        $dates->setImage('date', './contacts.png');
        
        $i ++;
        $module->details->merge();
    }
    $j ++;
    $module->merge();
}
$odf->mergeSegment($module);

$odf->setImage('image','./mysql.jpg');

$odf->setImage('image2','./Excel20073D.png');

$odf->saveToDisk('generate.odt');

$odf->getZip()->forceDownload('generate.odt');
?>

 Conclusion

Requis :
- PHP 5.2.X
- L'extension php_zip (installée dans Wamp par exemple, mais pas activée par défaut)
- OpenOffice 3.X

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 mars 2009 13:56:49 :
L'utilisation de cette source que je viens de mettre sur un projet en production a posé souci sur la localisation du répertoire issu du .odt. C'est maintenant corrigé. Pour ceux que ça intéresse vous pouvez me laisser un message privé pour avoir cette source compatible avec le Zend Framework (j'ai en fait transformé les noms des classes et tout clarifié au format CamelCase).
30 mars 2009 18:09:32 :
Il est possible de créer des boucles dynamiques avec odtPHP mais apparemment on ne peut insérer que du texte grâce à "setVar" présent sur la classe Segment. J'ai donc modifié la classe Segment pour rajouter des images dynamiquement à chaque tour de boucle. J'ai modifié l'exemple en conséquence.
30 mars 2009 18:11:09 :
Vous pouvez maintenant insérer des images de façon dynamique sur les boucles crées dans vos modèles. Auparavant on ne pouvait ajouter que du texte.
30 mars 2009 19:57:50 :
Corrections de bug sur l'ajout d'images dynamiques dans des sous-boucles. Modification de l'exemple en conséquence.

 Sources du même auteur

Source avec Zip OF_DIRECTORYITERATOR : ITERATEUR DE RÉPERTOIRES AVEC FILTRES...
Source avec Zip Source avec une capture LISTBOX, CHECKLISTBOX PARAMÉTRABLE
Source avec Zip Source avec une capture CALENDRIER AGENDA PERSO, PRO + EXPORT OUTLOOK

 Sources de la même categorie

CALCUL D'UNE DISTANCE ORTHONORMIQUE par bossfoot
Source avec Zip ESPACE ADMIN SIMPLE par mousaid_88
Source avec Zip IMAGINE-CMS V2.20 par djack69
Source avec Zip AFFICHAGE ET GESTION DE DIAPORAMA EN PHP SANS BASE DE DONNÉE... par mldvb
Source avec Zip Source avec une capture PARSER ALLOCINE par cyrhades

 Sources en rapport avec celle ci

Source avec Zip MOTEUR DE TEMPLATE PHPBB3 SIMPLIFIÉ EN PHP5 par gagah1
Source avec Zip GÉNÉRER DES DOCUMENTS OPENOFFICE (OPENDOCUMENT) OU WORD 2007... par oloynet
Source avec Zip CHANGEMENT DE TEMPLATE par starkeny
Source avec Zip TEMPLATE ENGINE SIMPLE ET PUISSANT. EXTENTION DE FONCTIONS P... par BlackWizzard
CLASS MOTEUR DE TEMPLATE PHP5 par choy

Commentaires et avis

Commentaire de Renfield le 30/03/2009 12:05:45 administrateur CS

Lorsque tu ajoutes une source sur le site, il te faut confirmer son ajout pour qu'elle soit visible par tous...

Ajout => Description + Fichiers + etc. => Prévisualisation => Mot clés => Terminé

Commentaire de griffondorr le 03/04/2009 12:03:17 7/10

bon codage, juste je voudrais savoir comment on active la fonction php_zip dans wamp ? svp

Commentaire de griffondorr le 03/04/2009 12:05:23

quand j'ouvre le tutorial avec open office, voici ce que j'obtien :

{titre}

{message}

{image}

{image2}

[!-- BEGIN modules --]

{TitreModule}

     [!-- BEGIN details --]
         {detail}
                      [!-- BEGIN dates --] {infodate}   {date}[!-- END dates --]

     [!-- END details --]

[!-- END modules --]

je sais pas si c'est normal, merci de m'aider ;)

Commentaire de griffondorr le 03/04/2009 12:06:52

enfin quand je dis open office, je veux dire : "Office on writer" et j'ai la version 7 de office

Commentaire de griffondorr le 03/04/2009 12:14:45

je viens d'activer le php_zip dans wamp .

j'ai Office on Writer v7" je sais pas si sa suffit mais j'optien des erreurs et je peux pas lire le tutorial ;)

et dans wamp , je dispose de la version : WAMP5 Version 1.7.0

donc est ce que vous penser que j'ai tout activer ou alors ce qu'il me manque des choses pour que la source marche ?

en tout cas en attendant je vois pas la source en entière car j'optien des morceaux de la source.

merci de m'aider ;)

Commentaire de griffondorr le 03/04/2009 12:22:39

j'active toute les extensions sous wamps, après je reessaye la source ^^

Commentaire de stailer le 03/04/2009 13:23:22

Salut,
je sais pas ce que tu entends par "Office on Writer v7" . Il te faut OpenOffice avec Writer installé en version 2 minimum. Moi j'ai testé avec open office 2.0 et avec la 3.0 (la dernière donc) et ça marche.

Sinon le fichier "tutorial1.odt" est le fichier "modèle" pour créer le document OpenOffice. En fait tu dois lancer le script "test.php" qui va générer un fichier generate.odt et te le proposer en téléchargement.

Au niveau des extensions, sous Wamp normalement il n'y a que php_zip à ajouter.
Es-tu bien en PHP 5.2.X ?

Commentaire de griffondorr le 03/04/2009 13:51:42

je viens d'installer wampserver à la place de wamp pour avoir plus d'options ;)

j'ai vu sur google que pour le php 5.2.x Que c'était ce site : http://php.net/downloads.php et que sa c'est le tutorial : http://foundationphp.com/tutorials/php_installer.php

afin je suis pas sur que c'est le bon lien pour télécharger PHP 5.2.X

si ce n'est pas le bon lien web, peut tu me donne le lien pour télécharger PHP 5.2.X stp ?

ma version de wampserver : WampServer Version 2.0


Commentaire de Renfield le 03/04/2009 13:59:00 administrateur CS

y'a pas de .X

Stailer t'indiquait php 5.2

le X est là pour dire "n'importe quelle version"

prend la dernière, ca ira

Commentaire de griffondorr le 03/04/2009 14:45:56

je viens d'installer php5, une fois que j'ai installer et redémarrer le pc comme ils disent, je fais comment pour le configurer et m'en servir ?

merci de me répondre ;)

Commentaire de oloynet le 06/05/2009 16:02:25

Bonjour,

Personnellement j'ai eu le même problème avec la méthode Zip de PECL, et j'ai du faire un petit hack dans le code sans avoir à changer de la librairie


$zip->addFile($sourcePathname, $archivePathname);

par

$zip->addFromString( $archivePathname, file_get_contents( $sourcePathname, false ) );

D'ailleurs pour info j'ai développé une nouvelle classe PHP qui permet de générer des documents OpenOffice et Word 2007 qui s'appelle tinyDoc.

A voir sur :
http://tinydoc.unesolution.fr

Et les exemples :
http://tinydoc.unesolution.fr/examples

Olivier






ce qui évite que l'archive soit corrompue

Commentaire de stailer le 13/05/2009 18:34:54

Comme je l'ai dit sur ta source, la solution la plus simple est d'utiliser comme je l'ai fait, une classe qui gère le zip de façon indépendante.
Quelque que soit la plateforme le code reste le même.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Template :: Comment ça marche??? [ par Adagyo ] Salut @ tous,Je souhaiterais proposer au utilisateur plusieurs theme d'affichage de mes page web... Pour cela, j'ai essayé de décortiquer un peux vBul template.inc [ par joedalton ] bonjourVoila, je possede un fichier template.inc qui me permet de définir ma classe template, mais le probleme c'est que ce fichier est valable pour l template aide [ par thedentiste ] Voila est ce que quelqu'un pourrais m'aider pour utlisation de template j'ai chope plein de tuto mais je trouve pas ce qu'il le faut je cherche a fair Template phplib [ par TuXAveRy ] Bonjour,Voila j'ai un problème de logique assez basic :/J'utilise smarty depuis quelque temps déjà et pour des raisons technique je souhaiterais passe php dans template [ par BirD ] hello, une tite question par rapport aux templates : peut -on ins&#233;rer du code&nbsp; php dans le fichier de template et faire que ca fonctionne ? fusion php mysql openoffice [ par titoye ] Bonjour &#224; tous, j'aimerai depuis un page php fusionner un document texte openoffice.Le top serai de pouvoir lancer directement la fusion mais pou template [ par Urukai1 ] bonjour a tous g une question sur les termplates j'utilise celle de PHPLib en gros j'ai fait un modele de page web a laquelle j'applique des valeurs Comment gérer les boutons submits [ par alaise ] Bonjour,Je cherche &#224; savoir comment je peux faire pour g&#233;rer les boutons submits lorsque j'ai plusieurs formulaires dans une page (template) Prob avec preg_replace() [ par Kevergeek ] Voici mon code : &lt;?php $file = "templates/default/test.tpl"; $template['TITLE'] = "titre"; $template['TEXT'] = "blabla"; $file = file_get_content Generation documents OpenOffice 2.0 [ par darunia ] Bonjour,Je souhaiterais savoir si il existe une librairie permettant de generer des documents sxw pour OpenOffice Writer 2.0.Si oui, merci de m'indiqu


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales