xposé jopendocument
TRANSCRIPT
JOpenDocument
ROLEZ Philippe
24 Janvier 2012
jOpenDocument
IR3 - XPosé
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
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
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
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
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
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?
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/…)
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
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>
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
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
…
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
jOpenDocument
Diagramme de classes principal
13
jOpenD
ocum
ent
jOpenDocument
Ouverture d’un fichier :: ZipFile
14
jOpenD
ocum
ent
mimetypemeta.xmlsettings.xmlcontent.xmlThumbnails/thumbnail.pngStyles.xml/META-INF/manifest.xml
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);
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);
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
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();
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());
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
Démonstration
• Document
SLIDE modifier pour cause de confidentialité
21
jOpenD
ocum
ent
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
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
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
Démonstration
• La solution jOpenDocument*• Lecture des cellules spécifiques pour chaque fichier analysé
25
jOpenD
ocum
ent
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
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
Questions
27
jOpenD
ocum
ent
Merci de votre attention