Odtphp - update pour php 5.2.7 et +

Soyez le premier à donner votre avis sur cette source.

Vue 7 095 fois - Téléchargée 551 fois

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 / Exemple :


<?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

Codes Sources

A voir également

Ajouter un commentaire Commentaires
cs_stailer Messages postés 507 Date d'inscription jeudi 28 mars 2002 Statut Membre Dernière intervention 13 mai 2009 1
13 mai 2009 à 18:34
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.
oloynet Messages postés 10 Date d'inscription jeudi 3 mars 2005 Statut Membre Dernière intervention 5 juin 2009
6 mai 2009 à 16:02
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
griffondorr Messages postés 427 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 4 mai 2009
3 avril 2009 à 14:45
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 ;)
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 75
3 avril 2009 à 13:59
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
griffondorr Messages postés 427 Date d'inscription dimanche 6 juillet 2008 Statut Membre Dernière intervention 4 mai 2009
3 avril 2009 à 13:51
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.