TinyButStrong - lr moteur de modèle pour PHP
English flag English

tbsOOo : TinyButStrong OOo

Auteur : Olivier LOYNET (tbsooo@free.fr)
Date : 2006-06-12
Version : 0.7.9
Web site : http://www.tinybutstrong.com
Forum : http://www.tinybutstrong.com/forum.php
Type de licence : GNU LGPL http://www.gnu.org/copyleft/lesser.html


La classe tbsOOo est une extension du moteur de template TinyButStrong.

Elle permet de générer dynamiquement des documents OpenOffice en séparant présentation et données.
En pratique, il suffit de concevoir un document avec OpenOffice qui servira de modèle (template). Ensuite à partir du script PHP il reste à fusionner ce modèle avec une source de données pour obtenir un nouveau document OpenOffice.

Sommaire

Historique

Téléchargement

Fonctionnalités

Limites

Pré requis

coté serveur

coté client

Installation

Zip et Unzip

Les exécutables Zip et Unzip sont nécessaires sur le serveur pour que la classe tbsOOo puisse extraire/ajouter les fichier XML des documents OpenOffice.
Les noms des exécutables sont fixés par défaut sans le chemin complet et sans extension. Les valeurs sont : 'zip' et 'unzip'.

En environnement LINUX typiquement les chemins d'installation sont '/usr/bin/zip' et '/usr/bin/unzip'.
En environnement WIN32 il faut obligatoirement installer ZIP et UNZIP. Ils sont librement téléchargeable à partir du site d'info-zip.

Astuce : pour avoir un fonctionnement non dépendant du type de serveur, la variable d'environnement 'PATH' peut-être fixée par la commande DOS suivante :
set PATH=c:\program files\bin;%PATH%
(si les exécutables sont installés dans le répertoire : 'c:\program files\bin')

Demander assistance à votre administrateur système si besoin.

Le répertoire de travail

La classe a besoin d'un répertoire de travail pour la création des nouveaux documents OpenOffice. Toutes les opérations (extraction, fusion, ...) sont effectuées dans ce répertoire avec un nom unique.
Ce répertoire doit être en écriture par le script PHP (en général l'utilisateur Apache).
La valeur par défaut est fixée dans la classe à : 'tmp/'.

Vous pouvez aussi utiliser le répertoire du système. Par exemple :

Sur un serveur Linux, fixez la valeur à '/tmp'.
Sur un serveur DOS, fixez la valeur à 'c:/windows/temp' ou à 'c:\\windows\\temp'.

OpenOffice

Si vous n'avez pas encore installé OpenOffice sur votre poste, c'est le moment. Il sera utile pour créer les gabarits (template) et pour visualiser les résultats après la fusion.
Pour une meilleure compréhension du format des documents OpenOffice, allez dans la rubrique astuces.

Tutorial

Etape 1. Création d'un gabarit avec OpenOffice.

Etape 2. Création d'un script PHP avec le code suivant.

<?
include_once('tbs_class.php');
include_once('tbsooo_class.php');

// data
$x = 'Hello World';

// instantiate a TBS OOo class
$OOo = new clsTinyButStrongOOo;

// setting the object
$OOo->SetZipBinary('zip');
$OOo->SetUnzipBinary('unzip');
$OOo->SetProcessDir('tmp/');
$OOo->SetDataCharset('ISO 8859-1');

// create a new openoffice document from the template with an unique id
$OOo->NewDocFromTpl('hello.sxw');

// merge data with OOo file content.xml
$OOo->LoadXmlFromDoc('content.xml');
$OOo->SaveXmlToDoc();

// display
header('Content-type: '.$OOo->GetMimetypeDoc());
header('Content-Length: '.filesize($OOo->GetPathnameDoc()));
$OOo->FlushDoc();
$OOo->RemoveDoc();
?>

Etape 3. Exécution du script pour obtenir un nouveau document avec les données fusionnées !.

Exemples

Avant tout, installez OpenOffice pour voir ces exemples.

  template result
exemple d'une facture présentée aux RMLL 2005 example_invoice.sxw example_invoice.php

exemples de TinyButStrong en tbsOOo
  gabarit resultat
Hello World tbsooo_us_examples_hello.sxw tbsooo_us_examples_hello.php
fusion de variables tbsooo_us_examples_var.sxw tbsooo_us_examples_var.php
fusion de variables système tbsooo_us_examples_system.sxw tbsooo_us_examples_system.php
fusion de tableau (array) tbsooo_us_examples_dataarray.sxw tbsooo_us_examples_dataarray.php
fusion de tableau (array) horizontale tbsooo_us_examples_datanum.sxc tbsooo_us_examples_datanum.php
utilisation du parametre 'frm' tbsooo_us_examples_prmfrm.sxw tbsooo_us_examples_prmfrm.php
utilisation du parametre 'max' tbsooo_us_examples_prmmax.sxw tbsooo_us_examples_prmmax.php
utilisation du parametre 'headergrp' tbsooo_us_examples_prmheader.sxw tbsooo_us_examples_prmheader.php
syntaxe des blocks tbsooo_us_examples_blocks.sxw tbsooo_us_examples_blocks.php
syntaxe des sous-blocks tbsooo_us_examples_subblock.sxw tbsooo_us_examples_subblock.php
syntaxe du tag 'serial' tbsooo_us_examples_prmserial.sxw tbsooo_us_examples_prmserial.php
affichage conditionnel tbsooo_us_examples_cond.sxw tbsooo_us_examples_cond.php
tbsooo_us_examples_cond.php?blk_id=1
tbsooo_us_examples_cond.php?blk_id=2
tbsooo_us_examples_cond.php?blk_id=3
syntaxe du tag 'event' tbsooo_us_examples_event.sxw tbsooo_us_examples_event.php
syntaxe du tag 'loop' tbsooo_us_examples_loops.sxw tbsooo_us_examples_loops.php?nbr=10
tbsooo_us_examples_loops.php?nbr=20
tbsooo_us_examples_loops.php?nbr=30

Astuces

Définition de la classe

Constructeur

Méthodes

Méthode: SetZipBinary

Méthode: SetUnzipBinary

Méthode: SetProcessDir

Méthode: SetDataCharset

Méthode: NewDocFromTpl

Méthode: LoadXmlFromDoc

Méthode: SaveXmlToDoc

Method: AddFileToDoc

Méthode: GetPathnameDoc

Méthode: GetMimetypeDoc

Méthode: FlushDoc

Méthode: RemoveDoc

Méthode: ClearProcessDir