Accueil > > > ODTPHP - UPDATE POUR PHP 5.2.7 ET +
ODTPHP - UPDATE POUR PHP 5.2.7 ET +
Information sur la source
Description
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
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
Sources de la même categorie
Commentaires et avis
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érer du code php dans le fichier de template et faire que ca fonctionne ?
fusion php mysql openoffice [ par titoye ]
Bonjour à 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 à savoir comment je peux faire pour gérer les boutons submits lorsque j'ai plusieurs formulaires dans une page (template)
Prob avec preg_replace() [ par Kevergeek ]
Voici mon code : <?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
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|