OVH Cloud OVH Cloud

OpenOffice::OODoc V 1.2

5 réponses
Avatar
Jean-Marie Gouarné
Bonjour,

La nouvelle distribution (1.203) du module OpenOffice::OODoc est
disponible au CPAN.

Ce module permet d'accéder directement en lecture et écriture aux
documents OpenOffice.org (sans utiliser l'API OpenOffice.org). Il offre
un représentation objet des documents, assortie d'un collection de
méthodes de création, recherche, modification ou suppression d'éléments
de contenu ou de présentation. Techniquement, ce module est en pur Perl
et s'appuie sur XML::XPath et Archive::Zip.

Hormis quelques mises au point techniques et des ajouts de
documentation, les changements fonctionnels récents sont les suivants:

- Désormais, il est possible de créer entièrement un nouveau document
(alors que les versions précédent ne traitaient que des documents
éventuellement vides mais préalablement créés avec OpenOffice). Pour
cela, il suffit de donner une option additionnelle "create", indiquant
la classe du nouveau document au constructeur initial. Par exemple, pour
créer un nouveau document classeur (OOo Calc), on peut écrire:

my $doc = ooDocument(file => "classeur.sxc", create => "spreadsheet");

Les documents ainsi créés sont générés à partir de modèles XML fournis
dans la distribution; mais l'utilisateur peut sélectionner ses propres
modèles

- La méthode createImageElement() a été améliorée de manière à mieux
fonctionner dans les documents Draw et Impress (elle était auparavant
dédiée aux documents Writer et Calc, ne sachant pas attacher une image à
une page non textuelle). Exemple:

$doc->createImageElement
(
"Montagne",
description => "Le Canigou en hiver",
page => 3,
position => "5cm, 3.2cm",
size => "8cm, 5cm",
style => "ImagesMaison",
import => "C:\Galerie\Canigou.jpg"
);

- Des fonctions de conversion sont fournies de manière à faciliter le
traitement des dates (stockées au format ISO-8601 dans les documents
OpenOffice);

- Dans la définition des attributs de couleur (pour les textes et les
arrière-plans), on peut à présent utiliser des noms symboliques et pas
uniquement des codes RGB en hexadécimal. Par exemple, pour appliquer un
style "bleu foncé sur jaune" à tous les paragraphes contenant un certain
mot-clé (disons "OpenOffice"), le code devient légèrement plus lisible:

$doc->createTextStyle
(
"BleuSurJaune",
properties =>
{
'fo:color' => rgb2oo("dark blue"),
'fo:background-color' => rgb2oo("yellow")
}
);
$doc->setStyle($_, "BleuSurJaune")
for $doc->selectElementsByContent("OpenOffice");

(les noms de couleurs dépendent d'un fichier RGB au choix de
l'utilisateur; dans cet exemple, on se base sur un "rgb.txt" tel que
celui qui est fourni dans la distribution Perl Color::Rgb ou dans la
plupart des environnements X-Window)

- Les jeux de caractères locaux semblent mieux gérés. (Pour la France et
la plus grande partie de l'Europe de l'Ouest, je recommande le jeu
iso-8859-15 qui permet notamment d'utiliser le caractère euro. J'ai eu
un rapport positif d'un utilisateur du jeu iso-8859-2 (Europe Centrale).
Le jeu de caractères par défaut n'est plus obligatoirement iso-8859-1;
la distribution CPAN permet d'en choisir un autre au moment de
l'installation. (Et bien sûr il peut être changé dans chaque application
avec la fonction ooLocalEncoding()).

Les méthodes classiques de recherche/modification/création/suppression
de contenu ou de styles sont inchangées.

Pour plus de détails, voir http://search.cpan.org/dist/OpenOffice-OODoc

Merci d'avance pour toute remarque

JMG http://jean.marie.gouarne.online.fr

5 réponses

Avatar
paul POULAIN
Ce genre de module me semble très intéressant pour un projet sur lequel je
vais bientôt bosser.
Pour être définitivement convaincu, une question (un peu HS ici, mais
complémentaire)
Est-il possible d'imprimer par un script un document manipulé ?
Un truc genre oowrite --print /chemin/vers/mon_document_généré.sxw
Ca peut être du Perl, ou du shell, les 2 me vont tout à fait.

Merci d'avance
--
Paul
Avatar
paul POULAIN
google devrait être obligatoire avant de poster un message...

Mais bon, j'ai déjà la réponse à ma question :
oowriter -pt "HP1200" ~/Documents/facture.sxw
est la réponse à ma question.

Moi yen a bien content, ce module devrait bien me servir...
--
Paul
Avatar
Paul GABORIT
À (at) Thu, 05 Aug 2004 16:03:19 +0200,
Jean-Marie Gouarné écrivait (wrote):
La nouvelle distribution (1.203) du module OpenOffice::OODoc est disponible
au CPAN.


Un module très prometteur... À essayer.

[...]
$doc->createImageElement
(
"Montagne",
description => "Le Canigou en hiver",
page => 3,
position => "5cm, 3.2cm",
size => "8cm, 5cm",
style => "ImagesMaison",
import => "C:GalerieCanigou.jpg"
);


Ce qui est drôle c'est de comparer ce message avec celui que vous avez posté
dans comp.lang.perl.announce... Je ne savais pas que la traduction du terme
anglais "Kilimanjaro" était "Canigou" ;-)

En tous cas, bravo pour ce module.

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
Jean-Marie Gouarné
google devrait être obligatoire avant de poster un message...

Mais bon, j'ai déjà la réponse à ma question :
oowriter -pt "HP1200" ~/Documents/facture.sxw
est la réponse à ma question.

Moi yen a bien content, ce module devrait bien me servir...


J'ai participé à un application dans laquelle, justement, une commande
de ce type était lancée à partir du script perl ayant servi à générer le
document.

On peut aussi, toujours dans un même script Perl, générer un document à
l'aide de l'API OpenOffice::OODoc, puis appeler OOo pour le convertir en
PDF. J'ai d'ailleurs développé il y a quelques mois une maquette qui,
utilisant à la fois OpenOffice::OODoc, SOAP::Lite et Mail::Sender,
permettait au client, via un service web, de consulter ou mettre à jour
à distance une "base de données" contenue en réalité dans un simple
document OOo-Writer essentiellement constitué de tableaux, et de se
faire envoyer un état PDF (en pièce jointe par un e-mail généré) un
rapport des opérations.

Donc l'objectif de ce module est clairement d'intégrer les documents
bureautiques dans des applications d'entreprise, le tout sans dépendre
d'une API propriétaire.

Avatar
FDA
Jean-Marie Gouarné wrote:

La nouvelle distribution (1.203) du module OpenOffice::OODoc est
disponible au CPAN.

Ce module permet d'accéder directement en lecture et écriture aux
documents OpenOffice.org (sans utiliser l'API OpenOffice.org). Il offre
un représentation objet des documents, assortie d'un collection de
méthodes de création, recherche, modification ou suppression d'éléments
de contenu ou de présentation. Techniquement, ce module est en pur Perl
et s'appuie sur XML::XPath et Archive::Zip.

Merci d'avance pour toute remarque


Merci en tout cas de toutes ces infos, que je vais tester dès ce
week-end :o)