Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Julien Chable

He blogs, you blog, I blog ...

Archives

[Open XML] Annonce lancement du projet OpenXML4J : l'API Open XML pour Java !

Pour une fois et parmi l'ensemble des posts sur Open XML que j'ai pu faire, je ne ferais pas le relais du lancement d'un projet ou de l'ouverture d'une communauté ! Non, cette fois c'est à mon tour de faire l'annonce, et non le relais, d'un projet autour de Open XML (conjointement avec Redo) !

Effectivement, j'ai le plaisir de vous annoncer le lancement du projet OpenXML4J sur lequel nous travaillons depuis quelques temps maintenant avec Redo et plus généralement chez Wygwam (quelques autres personnes également que vous découvrirez tout au long des différentes posts sur l'aventure de ce projet).

Avant de rentrer dans le vif du sujet et en guise de mini introduction, un petit come back sur l'origine du projet ! Peut-être aviez vous déjà lu - ou au moins regardé - les articles que j'avais publié l'été dernier sur MSDN France grâce à Lucas (il y a depuis ce temps du Java, du vrai pas du J#, sur le site des développeurs Microsoft !) : introduction et manipulation (partie 1 | partie 2). Devant l'engouement et les retours très positifs des personnes ayant lues ou utilisées cet article pour leurs propres besoins, et également conscient des besoins pour le marché de cette API ; il aurait été dommage de ne pas continuer - débuter ??? - l'aventure avec la Wygteam en partageant ce projet avec la communauté open source et les développeurs Java.

OpenXML4J ... késako ???

C'est un 'acronyme' issu de 'Open XML for Java' , mais surtout un projet open source (licence BSD/Apache v2) dont l'objectif est de créer une librairie/API unifiée et destinée aux développeurs Java afin de leur permettre de réaliser des solutions utilisant le format de fichier standard Open XML (ECMA-376 / ISO DIS-29500).

Concrètement, ça veut dire quoi ? Tout simplement que ce projet permet aux développeurs et aux entreprises utilisant la plateforme Java de pouvoir accéder et manipuler nativement les différents formats utilisés par Office 2007, à savoir Word, Excel et PowerPoint (et un semblant de XPS). OpenXML4J aussi bien avec les éditions J2SE ou J2EE (sûrement une petite démo aux WygDays ...), vos applications pourront créer, modifier, extraire des données, ... bref manipuler des documents Open XML !

Vous pouvez déjà trouver quelques scénarios d'utilisation du format Open XML et de la librairie OpenXML4J, mais imaginez tout simplement pouvoir générer un document Word ou Excel - par exemple un rapport de vente ou une facture, en cliquant sur un bouton dans votre explorateur web - grâce à votre application J2EE hébergé sur un serveur Linux ! Voilà un exemple parmi beaucoup d'autres de la vocation de OpenXML4J.

Un projet open source n'en serait pas un sans une plateforme collaborative digne de ce nom, c'est pourquoi nous avons choisi sourceforge comme hébergeur : https://sourceforge.net/projects/openxml4j/

L'utilisation de la licence BSD a été choisi afin que toutes les personnes - que ce soit des développeurs de projets open source/libre, des développeurs indépendants ou des entreprises - puissent utiliser cette API pour créer des solutions innovantes sans avoir les contraintes liées à certaines licences copyleft de type GPL, dans le sens où vous n'êtes pas obligé de redistribuer à votre tour ni les sources et ni le fruit de vos réalisations.

Pour avoir toutes les informations et détails de projet, consultez le site officiel du projet : http://www.openxml4j.org/

Télécharger les binaires : https://sourceforge.net/project/showfiles.php?group_id=175435 (attention Nightly Build  seulement pour le moment)

Parlons un peu technique  !

Le projet OpenXML4J à la prétention de couvrir au maximum la spécification Open XML, c'est à dire :

  • Open Packaging Convention (structure interne de tout fichier Open XML et XPS)
  • WordprocessingML (traitement de texte -> Word)
  • SpreadsheetML (tableur -> Excel)
  • PresentationML (présentation -> PowerPoint)

Voici un aperçu global du projet avec les différents composants :

Ces différentes briques seront réalisés selon une roadmap au plus proche de celle présentée ci après, et comme vous le comprendrez aisément, le premier composant à être implémenté est celui concernant l'Open Packaging Convention, c'est à dire le socle de fondation de tout document Open XML (et XPS !) :

Voici le détail des parties dont le projet devrait implémenter la spécification :

  • Open Packaging Convention (Part 2: Open Packaging Conventions)
  • Langages partagés :
    • DrawingML (Part 4: Markup Language Reference - §5)
    • MathML (Part 4: Markup Language Reference - §7.1)
    • Extended Properties (Part 4: Markup Language Reference - §7.2)
    • Custom Properties (Part 4: Markup Language Reference - §7.3)
    • Custom XML Data Properties (Part 4: Markup Language Reference - §7.5)
    • [Compatibilty & extensibility (VML, ...)]
  • WordprocessingML (Part 4: Markup Language Reference - §2) :
    • Parties Fortement Typées
    • Modèle Objet 
  • SpreadsheetML (Part 4: Markup Language Reference - §3 ):
    • Parties Fortement Typées
    • Modèle Objet
  • PresentationML (Part 4: Markup Language Reference - §4 ) :
    • Parties Fortement Typées
    • Modèle Objet 

Testez OpenXML4J  !

Tout d'abord je vous rappelle l'adresse où vous pouvez trouver les dernières versions des binaires et des sources (le SVN est aussi une bonne source pour se procurer les dernières sources mais plus risqué si vous souhaitez l'exploiter pour vos projets) : https://sourceforge.net/project/showfiles.php?group_id=175435 (Nightly Build  seulement pour le moment). Vous pouvez aussi utiliser un client Subversion (TortoiseSVN par exemple) pour récupérer l'intégralité des sources.

Par exemple pour retrouver la partie principale du document, c'est à dire le XML du contenu de votre document (que ce soit pour du WordprocessingML, SpreadshetML ou PresentationML), seul quelques lignes suffisent :

// Ouverture du paquet

Package p = Package.open(fileName, PackageAccess.READ);

// Obtenir la relation de la partie principale du document
PackageRelationship coreDocRelationship = p.getRelationshipsByType(
   PackageRelationshipTypes.
CORE_DOCUMENT
).getRelationship(0);

// Obtenir la partie principale et de son flux de lecture
PackagePart corePart = p.getPart(coreDocRelationship);
InputStream ins = corePart.getInputStream();
...

Vous souhaitez connaître l'intégralité du contenu de votre document ?

Package p = Package.open(filepath, PackageAccess.

READ);
for
(PackagePart part : p.getParts())
       System.
out
.println(part.getPartName() + " -> " + part.getContentType()); 

Ou encore changer les propriétés ?

// On ouvre le document ...
pkg = Package.open("

monDoc.xslx", PackageAccess.READ_WRITE);

// ... on change ses propriétés ...
PackageProperties coreProps = pkg.getPackageProperties();
coreProps.setCreatorProperty(

"Wygwam powered");
coreProps.setDescriptionProperty(
"L'effet Waoh"
);
coreProps.setTitleProperty(
"OpenXML4J : l'API Java pour Open XML qui rocks !"
);

// ... puis on le sauvegarde.
pkg.close();

Bref vous l'aurez compris, OpenXML4J rend la manipulation des documents Open XML aisée. C'est d'ailleurs l'un des objectifs du projet que de vous fournir une API simple, pragmatique et répondant aux besoins des développeurs ! D'ailleurs n'oubliez pas la partie 'community' du site dans laquelle vous trouverez tous les outils pour nous faire parvenir vos feedbacks, les forums et listes de diffusions pour communiquer avec l'équipe et les autres utilisateurs, et même soumettre les fonctionnalités que vous aimeriez voir dans la librairie !

Pour le développement nous utilisons l'IDE Eclipse mais si vous êtes un aficionado de Netbeans, quelques manipulations triviales vous permettrons d'en faire autant dans cet IDE. Dans un prochain post, bien qu'un document sur le serveur de dépôt de sources existe à cet effet - comment, je vous indiquerais les étapes pour pouvoir récupérer et compiler sans effort OpenXML4J.

Nous avons besoin de vous !

Evidemment, OpenXML4J est un projet d'envergure, aussi toutes les contributions sont les bienvenues et les outils mis en place sur sourceforge sont là pour ça :

Par contributeurs j'entends bien tout le monde, et pas seulement les développeurs ! D'ailleurs, je tends à distinguer souvent trois catégories de contributeurs, tous aussi indispensables les uns que les autres :

  • les utilisateurs de la librairie qui apportent d'importants retours en signalisant un bug voire même en donnant la procédure pour le reproduire,
  • les utilisateurs/développeurs ("utilisateurs avancés") qui identifient et proposent un correctif pour le ou les bugs. Cette catégorie est aussi associée à celle des testeurs, même si le travaille n'est pas tout à fait le même basiquement, car ils participent souvent activement au débogage et aux tests de la librairie afin d'en garantir la qualité,
  • les développeurs qui construisent (péniblement ??? Ceux qui créent les bugs ??? :p) la librairie et encadré par les indispensables utilisateurs/développeurs/testeurs sans qui le projet ne pourrait pas être fiable

Evidemment cela dépend de votre motivation et de votre temps, mais dans tous les cas, la moindre aide sera précieuse et permettra au projet d'avancer tout aussi rapidement et sûrement. Un grand merci d'avance à vous pour votre aide et votre soutient.

Conclusion

Sur ce je vous laisse visiter le site officiel (http://www.openxml4j.org/) et parcourir le contenu, quand à moi je m'en vais continuer à faire évoluer OpenXML4J ;-)

PS : Sachez également que beaucoup de choses sont prévues mais on vous les dévoilera au fur et à mesure et en fonction de l'avancement du projet ; par exemple ne soyez pas étonné de trouver quelques snippets pour Eclipse arriver un jour dans le dépôt Subversion ... stay tuned !

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 31 mai 2007 07:00 par neodante

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Merci par Blog de Jérémy Jeanson le 10-01-2019, 20:47

- Office 365: Script PowerShell pour auditer l’usage des Office Groups de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 11:02

- Office 365: Script PowerShell pour auditer l’usage de Microsoft Teams de votre tenant par Blog Technique de Romelard Fabrice le 04-26-2019, 10:39

- Office 365: Script PowerShell pour auditer l’usage de OneDrive for Business de votre tenant par Blog Technique de Romelard Fabrice le 04-25-2019, 15:13

- Office 365: Script PowerShell pour auditer l’usage de SharePoint Online de votre tenant par Blog Technique de Romelard Fabrice le 02-27-2019, 13:39

- Office 365: Script PowerShell pour auditer l’usage d’Exchange Online de votre tenant par Blog Technique de Romelard Fabrice le 02-25-2019, 15:07

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Stream Portal par Blog Technique de Romelard Fabrice le 02-21-2019, 17:56

- Office 365: Script PowerShell pour auditer le contenu de son Office 365 Video Portal par Blog Technique de Romelard Fabrice le 02-18-2019, 18:56

- Office 365: Script PowerShell pour extraire les Audit Log basés sur des filtres fournis par Blog Technique de Romelard Fabrice le 01-28-2019, 16:13

- SharePoint Online: Script PowerShell pour désactiver l’Option IRM des sites SPO non autorisés par Blog Technique de Romelard Fabrice le 12-14-2018, 13:01