Classe php2rtf version 0.1.4



Objectifs généraux :

A propos de cette version :

Licence et support :

Installation :

Bon à savoir :

TODO :

  • Ajouter pour les tableaux le support pour Word 2000.
  • Implémenter les feuilles de style
  • Fonction haut niveau pour gérer l'affichage des tableaux.
  • Revoir le système de tampon pour ne plus être limité à 4Ko avant chaque écriture sur le fichier en dur.
  • Système de gestion automatique des retours à la ligne pour les textes à l'intérieur des paragraphes et tableaux. (via \n et/ou le tag BR).
  • Support des images au format .png
  • Tests pour tenter de gérer les formats .gif
  • Relecture critique du source.
  • Améliorer la documentation, notament via des exemples pratiques.
  • Tests de validité de la syntaxe rtf sur différents parseurs et OS.
  • Implémenter les listes (puces et numérotation).
  • Système d'édition 'manuel' en utilisant directement en manuel une syntaxe rtf pour compléter la couche d'abstraction Php.
  • Rajouter une FAQ.
  • Et tout le reste... ;) Si vous vous sentez de prendre un ou plusieurs points, ne surtout pas hésiter à envoyer un mail :))


    Un Helloworld avec la classe :

    include ("fichier_qui_contient_la_classe.php");
    $test = new php2rtf();
    $test->rtf_get_header();
    $test->rtf_para("helloworld");
    $test->rtf_get_doc_nav();




    Commentaires sur chaque méthode :


    rtf_set_unite()

    boolean rtf_set_unite( [int numero_unite] );

    Permet de sélectionner l'unité de mesure utilisée pour la mise en forme du document.
    Elle peut éventullement être modifiée en cours de création de document.
    Seul la hauteur des caractères n'est pas concernée par cette unité et utilise le demi-point.
    Si vous n'appelez pas cette méthode ou, n'utilisez pas de paramètre lors de l'appel, le mm sera utilisé par défaut pour tout le document.


    rtf_set_header_charset()

    void rtf_set_header_charset( [int numero_charset] );

    Sans commentaires


    rtf_set_header_colortbl()

    boolean rtf_set_header_colortbl( Array(2) table_des_couleurs );

    Tableau à deux dimensions (3 colonnes et n lignes), avec pour chaque couleur les valeurs RVB en décimal.
    La première ligne du tableau passé en argument correspond à la couleur 0 et ainsi de suite...
    Par défaut (sans appeler la méthode) la seule couleur possible sera le noir.


    rtf_set_header_fonttbl()

    boolean rtf_set_header_fonttbl( [Array(2) table_police] );

    Le tableau passé en argument comporte deux colonnes (famille de fonte, nom de la fonte), et autant de lignes que de police définies.
    La première ligne du tableau correspond à la police 0 et ainsi de suite, en suivant.
    Par défaut(sans appeler la méthode) seule la police par défaut du lecteur rtf sera disponible.


    rtf_set_header()

    boolean rtf_set_header( [int charset], [Array(2) font], [Array(2) couleurs]);

    Equivalent des méthodes rtf_set_header_charset(), rtf_set_header_fontbl() et rtf_set_header_colortbl()
    Celle-ci existe juste pour éventuellement faire gagner quelques lignes de code... ;)


    rtf_get_header()

    boolean rtf_get_header( void );

    Ajoute au document en cours de création les headers de formatage rtf
    Si aucune méthode rtf_set_header_* n'a été appelée, les valeurs par défaut sont utilisées.


    rtf_get_para()

    boolean rtf_get_para( void );

    Permet de terminer un paragraphe et d'ajouter le texte formaté dans le document en cours d'élaboration


    rtf_set_para_texte()

    boolean rtf_set_para_texte( string texte, [pas_implementé feuille_style], [int taille_police], [int font_number], [str attribut], [int color] );

    Permet de formater le texte passé en argument à l'intérieur d'un paragraphe.
    Plusieurs appel à la méthode peuvent être passé successivement avant d'appeler rtf_get_para();
    Il faut cependant ne pas dépasser 4 Ko de texte par paragraphe.


    rtf_set_para_format()

    boolean rtf_set_para_format( [int code_paragraphe], [int style], [str alignement], [int indentation_gauche], [int indentation_droite], [int indentation_premiere_ligne], [int espace_avant], [int espace_après], [int espace_interlignes] );

    L'espacement interligne n'est pris en compte que s'il est supérieur à la hauteur du plus grand caractère du paragraphe. Sauf si le paramètre est négatif, dans ce cas la valeur absolue du paramètre sert de valeur d'espacement, et les lignes peuvent éventuellement se chevaucher.
    Les valeurs des indentations, et espacements peuvent être soit des entiers, soit des double avec une ou deux décimales (ex : 12 ou 12.4 ou 12.45 sont acceptés)


    rtf_para()

    boolean rtf_para(string texte, [int code_paragraphe], [int_style], [str_alignement], [Array indentation], [Array espacement] );

    Cette méthode est juste faite pour pouvoir créer un paragraphe dont le texte lui-même ne nécessite pas de formatage particulier.
    Elle reprend les arguments de rtf_set_para_format, seuls les points suivants sont différents :

    De plus il est inutile d'appeler rtf_get_para() si vous utiliser rtf_para().


    rtf_pictures()

    boolean rtf_pictures(string path_image, [int largeur_en_pt], [int hauteur_en_pt] );

    Seul le format .jpeg est pris en compte. Le support pour le format .png est prévu...
    Les valeurs optionnelles Largeur et Hauteur, peuvent être soit des entiers, soit des double avec une ou deux décimales (ex : 12 ou 12.4 ou 12.45 sont acceptés)


    rtf_set_ligne_tab()

    boolean rtf_set_ligne_tab( [string align], [int bordure], [int marge], [int hauteur_ligne], [int saut_page] );

    Les valeurs Bordure, Maarge et Hauteur_ligne peuvent être soit des entiers, soit des double avec une ou deux décimales (ex : 12 ou 12.4 ou 12.45 sont acceptés)


    rtf_set_cell_tab()

    boolean rtf_set_cell_tab( int largeur, [string valign], [int bordure], [int ombrage], [int couleur] );

    Les valeurs de Largeur et bordure, peuvent être soit des entiers, soit des double avec une ou deux décimales (ex : 12 ou 12.4 ou 12.45 sont acceptés)
    Ne pas oublier que la largeur est cumulative pour les cellules, si votre première cellule fait 240, pour que la suivante soit de même taille, il faut utiliser 480.


    rtf_get_cell_tab()

    boolean rtf_get_cell_tab( void )

    Permet de fermer le paragraphe d'une cellule et la cellule elle-même.

    La séquence pour réaliser un tableau 'classique est la suivante :

    Attention la limitation à 4 Ko est ici valable pour une ligne entière !


    rtf_get_ligne_tab( void )

    boolean rtf_get_ligne_tab()

    Permet de finir la ligne du tableau en cours et de rajouter son contenu dans le fichier tampon


    rtf_get_doc_nav()

    boolean rtf_get_doc_nav( void );

    Permet une fois le document fini de le renvoyer intégralement vers le navigateur.

    Attention cette méthode utilise la fonction php header() ne renvoyer aucun autre contenu vers le client.