Xposé jopenDocument

29
JOpenDocument ROLEZ Philippe 24 Janvier 2012 jOpenDocument IR3 - XPosé

Transcript of Xposé jopenDocument

Page 1: Xposé jopenDocument

JOpenDocument

ROLEZ Philippe

24 Janvier 2012

jOpenDocument

IR3 - XPosé

Page 2: Xposé jopenDocument

Sommaire

• Présentation

• Qu’est ce que jOpenDocument?

• Qui?

• Historique

• OpenDocument

• Présentation

• Description du format

• jOpenDocument

• Comment la librairie fonctionne t-elle?

• Démonstration

• Conclusion

1

jOpenD

ocum

ent

Page 3: Xposé jopenDocument

Présentation

Qu’est ce que jOpenDocument?

• Librairie libre permettant de manipuler des fichiers OpenDocument sans aucun éditeur de texte installé.

• Créer

• Modifier

• Extraire des données

• Sous licence GPL

• Développé en JAVA

• http://www.jopendocument.org

2

jOpenD

ocum

ent

Page 4: Xposé jopenDocument

Présentation

Qui?

• ILM Informatique

• Entreprise Française

• 7 développeurs

• OpenConcerto : 400 Téléchargements/jour

• http://www.ilm-informatique.fr/

3

jOpenD

ocum

ent

Page 5: Xposé jopenDocument

Présentation

Historique

• 2003 : développement d’un Framework permettant de manipuler des fichiers OpenOffice .sxw (Avant la version 2.0)

• 2005 : développement du Framework pour le format openDocument 1.0

• Avril 2008 : version 1.0, le Framework prend le nom jOpenDocument et est rendu public sous licence GPL

• Octobre 2008 : version 1.1, prise en charge de OpenDocument1.1, la librairie est présentée à la JAVAOne de SUN

4

jOpenD

ocum

ent

Page 6: Xposé jopenDocument

Présentation

• Novembre 2008 : SUN récompense jOpenDocument d’un Community Innovation Bronze Award

• Novembre 2008 : SUN et IBM lancent odfToolKit

• Mai 2009 : 10 000 Téléchargements, jOpenDocument est beaucoup plus utilisé que odfToolKit **(mail)**

• Novembre 2010 : version 1.2• La société commence openConcerto

• De nos jours :• Plus le temps de s’y consacrer

• Plus compatible avec la version 1.2 de Open Document(17/03/11)

• Utilisé dans openConcerto pour créer des documents

• odfToolKit est accepté par Apache Incubator et prend le large avec POI

5

jOpenD

ocum

ent

Page 7: Xposé jopenDocument

Open Document

Présentation

• Norme développée par OASIS

• Format ouvert de données pour les applications bureautiques

• Pourquoi?

• 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... »

• Volonté de laisser le libre choix du logiciel pour utiliser ses documents

• Plus d’informations : http://fr.wikipedia.org/wiki/OpenDocument

6

jOpenD

ocum

ent

Tout le monde

Euhhh! Cloud? MO 2020? LibreOffice?

Page 8: Xposé jopenDocument

Open Document

Description du format

• Archive Zip

• Séparation entre le contenu, la mise en page et les métadonnées

7

jOpenD

ocum

ent

Fichier Description

content.xml Contient le contenu du document (texte)

style.xml Semblable au css pour HTML

meta.xml contient les métadonnées associées au document (auteur, langue, date de création…)

Settings.xml Contient des informations ne faisant pas partie du document en tant que tel, comme la position du curseur ou le zoom courant (100% par exemple)

mimetype contient le type MIME du documentapplication/vnd.oasis.opendocument.(text/spreadsheet/…)

Page 9: Xposé jopenDocument

Open Document

Description du format

8

jOpenD

ocum

ent

Répertoire Description

Pictures Contient les images du document

Basic Contient les scripts Basic éventuellement utilisés

META-INF/manifest.xml 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

Page 10: Xposé jopenDocument

Open Document

content.xml d’un fichier .odt

9

jOpenD

ocum

ent

<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>

Page 11: Xposé jopenDocument

jOpenDocument

La librairie• http://www.jopendocument.org/downloads.html• jOpenDocument-1.2.jar

La Javadoc• http://www.jopendocument.org/docs/index.html

Les exemples• http://www.jopendocument.org/start.html

La communauté• http://groups.google.com/group/jopendocument

Développement• 41 100 lignes de codes, 49 639 lignes de commentaires

10

jOpenD

ocum

ent

Page 12: Xposé jopenDocument

jOpenDocument

Représentation du document content.xml :: jDom

• We want to provide a solution for using XML from Java that is as simple as Java itself.

• Mappe le fichier en mémoire sous forme d’arbre

• Accès

• L’élément Root

• Chaque élément connait ses fils

11

jOpenD

ocum

ent

Page 13: Xposé jopenDocument

jOpenDocument

Représentation d’un fichier .ods :: jDom

12

jOpenD

ocum

ent

Document

body

Spreadsheet 1 Spreadsheet n……row 1 row 2 row n

Cellule vide

text text

cell 1 cell 2 cell n

styles autofont auto

Page 14: Xposé jopenDocument

jOpenDocument

Diagramme de classes principal

13

jOpenD

ocum

ent

Page 15: Xposé jopenDocument

jOpenDocument

Ouverture d’un fichier :: ZipFile

14

jOpenD

ocum

ent

mimetypemeta.xmlsettings.xmlcontent.xmlThumbnails/thumbnail.pngStyles.xml/META-INF/manifest.xml

Page 16: Xposé jopenDocument

jOpenDocument

Accès à une cellule :: « A2 » sur la première feuille de calcul

• Récupération du SpreadSheet souhaité :: Main.java

• Remplissage des objets

• Récupération de l’élément body :: SpreadSheet.java

15

jOpenD

ocum

ent

Element body = this.getContent().getRootElement().getChild("body");

final Document getContent() {return this.getPackage().getEntry("content.xml").getContent().getDocument();

}

SpreadSheet ss = SpreadSheet.createFromFile(file);

Page 17: Xposé jopenDocument

jOpenDocument

Accès à une cellule :: « A2 » sur la première feuille de calcul

• Récupération de la feuille de calcul :: Main.java

• Récupération de l’élément Sheet :: SpreadSheet.java

16

jOpenD

ocum

ent

public Element getSheetAtIndex(int index){NodeList nl = body.getElementsByTagName("spreadsheet");return (Element) nl.item(index);

}

Sheet s = ss.getSheetAtIndex(0);

Page 18: Xposé jopenDocument

jOpenDocument

Accès à une cellule :: « A2 » sur la première feuille de calcul

• Transformation de « A2 » en coordonnée : (0,1)

17

jOpenD

ocum

ent

Page 19: Xposé jopenDocument

jOpenDocument

Accès à une cellule :: « A2 » sur la première feuille de calcul

• Récupération de la ligne:: Sheet.java

• Récupération de la cellule

• Récupération de la valeur

18

jOpenD

ocum

ent

Point p = s.resolve("A2 "):Row r = s.getRowAtIndex(p.getX());

Cell c = r.getCellAtIndex(p.getY());

String val = c.getValue();

Page 20: Xposé jopenDocument

jOpenDocument

Accès à une cellule :: « A2 » sur la première feuille de calcul

• Récapitulatif

19

jOpenD

ocum

ent

File file = new File("template/test.ods");final Sheet sheet = SpreadSheet.createFromFile(file).getSheet(0);System.out.println(sheet.getCellAt(“A2").getValue());

Page 21: Xposé jopenDocument

Démonstration

• Migrer des fichiers présents sur des serveurs partagés vers un système de gestion de document électronique (GED)

SLIDE modifier pour cause de confidentialité

20

jOpenD

ocum

ent

Page 22: Xposé jopenDocument

Démonstration

• Document

SLIDE modifier pour cause de confidentialité

21

jOpenD

ocum

ent

Page 23: Xposé jopenDocument

Démonstration

• Principe

22

jOpenD

ocum

ent

Outil de préparation

Propriétairede documents

Outil de migration

Base de donnéesJournal de traitements

Journalisation

Serveurs partagés

Récupération desinformations liéesaux fichiers du propriétaire

Fichier pivot

Outils de GED

Page 24: Xposé jopenDocument

Démonstration

• Déroulement

• Choix d’un répertoire par l’utilisateur

• Analyse du répertoire

• Lecture des fichiers où l’utilisateur possède les droits de modifications

• Récupération des informations liées aux fichiers (Depuis JDK 7)

• chemin, date de création, date de dernier accès, date de dernière modification, propriétaire, lecteurs, modificateurs.

• Problème

• Il manque plusieurs informations pour le classer dans le système documentaire

• Il faudrait pouvoir lire le contenu du fichier, et récupérer les informations

23

jOpenD

ocum

ent

Page 25: Xposé jopenDocument

Démonstration

• Template d’une feuille de calcul

• Il faudrait récupérer le « titre »(C:2), « la confidentialité »(C:9), « le commentaire »(C:12), « la version »(F:2), « le statut »(F:3) et « le type »(F:4).

• L’utilisateur doit actuellement remplir à la main tous les champs dans l’outil de migration (Edition multiple Ouf!)

24

jOpenD

ocum

ent

Page 26: Xposé jopenDocument

Démonstration

• La solution jOpenDocument*• Lecture des cellules spécifiques pour chaque fichier analysé

25

jOpenD

ocum

ent

Page 27: Xposé jopenDocument

Conclusion

• Manipulation des fichiers .ods

• Visualisation et impression de ceux-ci sans LibreOffice d’installé

• Possibilité de fusionner des fichiers .odt

• C’est Français!

• Il n’y a plus de mise à jour

• Non fonctionnel avec les versions récentes de LibreOffice

• LibreOffice est peu utilisé dans les entreprises (voir POI)

• Prise en charge de openDocument 1.2

26

jOpenD

ocum

ent

Page 28: Xposé jopenDocument

Références

• http://www.jopendocument.org

• http://fr.wikipedia.org/wiki/OpenDocument

• http://www.ilm-informatique.fr/

• http://docs.oracle.com/javase/7/docs/api/

26

jOpenD

ocum

ent

Page 29: Xposé jopenDocument

Questions

27

jOpenD

ocum

ent

Merci de votre attention