jOpenDocument

Présentation

OpenDocument est un format ouvert de données pour les applications bureautiques : traitements de texte, tableurs, présentations, diagrammes, dessins et base de données bureautique. OpenDocument est la désignation d'usage d'une norme dont l'appellation officielle est OASIS Open Document Format for Office Applications, également abrégée par le sigle ODF.
La spécification OpenDocument s'est très largement inspirée du format créé pour les premières versions de la suite bureautique libre et gratuite OpenOffice.org. Les deux formats sont en effet fondamentalement similaires, tant par leur structure générale que par la liste des objets documentaires qu'ils permettent de représenter. Successeur du format initial d'OpenOffice.org, OpenDocument est avant tout proposé comme un format de convergence et d'interopérabilité entre logiciels bureautiques et, plus généralement, entre applications de traitement de documents.
Voici le slogan qui a fait parler de lui lors des conférences de présentation :
- Qui d'entre vous est sûr de posséder des documents auxquels il voudra pouvoir accéder dans dix ans ?
- Qui d'entre vous est sûr d'utiliser la même application bureautique dans dix ans ?
- Bien, donc je vais vous parler d'OpenDocument...
OpenDocument est actuellement à sa version 1.2 et est notamment utilisé dans LibreOffice.
Description du format
Contenu général
Le format OpenDocument est une archive Zip contenant un certain nombre de fichiers et de répertoires, ainsi qu'on peut le découvrir en ouvrant un fichier odt ou ods comme une archive Zip. Le format OpenDocument soutient une forte séparation entre contenu, mise en page et méta-données.
Il est composé de plusieurs répertoires et fichiers qui le décrivent.
Voici la description des différents éléments:
content.xml
C'est le fichier le plus important, il contient le véritable contenu du document (excepté le contenu binaire telles les images qui sont stockées dans un répertoire séparé). La syntaxe tire son inspiration du HTML et, quoique bien plus complexe, est raisonnablement compréhensible par un humain entraîné :


<text:h text:style-name="Heading_2">Ceci est un titre</text:h> <text:p text:style-name="Text_body"/> <text:p text:style-name="Text_body"> Ceci est un paragraphe. L'information de mise-en-page est stockée à part dans le style "Text_body" (Corps de texte). La balise vide text:p au-dessus correspond à un paragraphe vide, c'est-à-dire à un saut de ligne. </text:p>
OpenDocument a été conçu pour permettre de convertir ces données depuis plusieurs formats propriétaires (de Corel, le .doc de Microsoft Office, etc). Il reconnaît donc les fonctionnalités habituelles des suites bureautiques : plusieurs niveaux de chapitres, listes, paragraphes numérotés, liens, références, bookmarks, historiques des changements, etc. On y trouve également les mécanismes pour générer automatiquement les tables des matières, les index, les bibliographies, etc.
styles.xml
Un fichier OpenDocument est un ensemble d'objets décrits dans content.xml sur lesquels sont appliqués des styles définis dans le fichier style.xml. Un style est une collection de propriétés à la fois structurelles et de mise en forme. Une utilisation courante d'une application prenant en charge OpenDocument comme OpenOffice.org consiste donc à alterner entre la rédaction de texte et l'application de styles sur celui-ci. L'interface d'OpenOffice.org présente le styliste, une palette consacrée à la gestion des styles.
Les styles s'appliquent sur toutes sortes d'objets : paragraphes, cadres, pages, caractères, numérotations, etc. Les propriétés qu'ils définissent sont entre autres : le type d'un texte (standard, titre, note de bas de page, etc), les caractéristiques visuelles d'un texte (choix de la fonte, la taille, l'alignement, la couleur, etc), le type d'un compteur, l'ombrage d'une image, le nombre de colonnes d'une page, le sens d'écriture d'un cadre (par exemple, pour écrire du japonais à la verticale), etc. Les styles peuvent être créés pour toutes sortes d'usages et même avoir des propriétés conditionnelles. Pour les usages ponctuels de mise en forme, des styles automatiques, dépourvus de sens sémantiques, sont générés par le programme. L'abus de ces styles automatiques est considéré comme une erreur d'utilisation et surcharge inutilement le document.
On peut associé ce principe avec le CSS de HTML.
meta.xml
Ce fichier contient les méta-données associées au document.
Une liste de champs prédéfinis est indiquée par le standard : application, titre, description, sujet, mots-clés, auteur initial, auteur, imprimé par, date de création, date de dernière modification, date de dernière impression, durée d'édition, modèle utilisé, rechargement automatique, comportement url, langue, nombre d'éditions, durée totale d'édition, statistiques sur le document. Un utilisateur (ou une application) peut rajouter ses propres champs à cette liste.
<meta:creation-date>2012-01-18T21:59:18.22</meta:creation-date> <dc:creator>Philippe Rolez</dc:creator> <dc:date>2012-01-18T22:22:01.78</dc:date> <dc:language>fr-FR</dc:language> <meta:document-statistic meta:table-count="1" meta:object-count="0" meta:page-count="59" meta:image-count="2" meta:word-count="131" meta:character-count="542"/>
settings.xml
Contient des informations ne faisant pas partie du document en tant que tel, comme la position du curseur, le zoom courant (100% par exemple) ou la celulle sélectionnée.
mimetype
Ce fichier se résume à une ligne contenant le type MIME du document. (Ex : application/vnd.oasis.opendocument.(text/spreadsheet/.))
Une application implémentant OpenDocument n'a ainsi pas besoin de prendre en compte l'extension (.odt, etc) du document. Celle-ci est néanmoins conservée pour une meilleure compréhension par l'utilisateur.
Pictures
Ce répertoire contient toutes les images intégrées dans le fichier OpenDocument.
Une application prenant en charge OpenDocument y fait appel dans le fichier content.xml via une balise <draw:image> similaire à la balise HTML <img> :
<draw:image xlink:href="Pictures/image.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/>
Les images sont le plus souvent conservées dans leur format original (notamment pour les GIF, JPEG et PNG) mais les images bitmap (non compressées) sont converties en PNG pour diminuer la taille du fichier.
Basic
Ce répertoire contient les scripts Basic éventuellement utilisés dans le document.
META-INF/manifest.xml
Ce fichier contient la liste des noms de fichiers (ainsi que leur type) présents dans l'archive.
Thumbnails
Contient l'image miniature que l'on peut voir lors la navigation dans le système de fichier. Cette image représente un aperçu du contenu du document.