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 :

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.