Odtphp - update pour php 5.2.7 et +

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

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.