112 votes

Existe-t-il une API Java permettant de créer des documents Word riches ?

Je vais travailler sur une nouvelle application dans laquelle je dois générer un document Word contenant des tableaux, des graphiques, une table des matières et du texte. Quelle est la bonne API à utiliser pour cela ? Êtes-vous sûr qu'elle prend en charge les graphiques, les tables des matières et les tableaux ? Quels sont les problèmes cachés liés à leur utilisation ?

Quelques clarifications :

  • Je ne peux pas produire un PDF, ils veulent un document Word.
  • Ils utilisent MS Word 2003 (ou 2007), pas OpenOffice.
  • L'application fonctionne sur un serveur d'applications *nix.

Ce serait bien si je pouvais commencer avec un modèle de document et simplement remplir certains espaces avec des tableaux, des graphiques, etc.

Edit : Plusieurs bonnes réponses ci-dessous, chacune avec ses propres défauts par rapport à ma situation actuelle. Difficile de choisir une "réponse finale" parmi elles. Je pense que je vais laisser la question ouverte, et espérer que de meilleures solutions seront créées.

Edit : Le projet OpenOffice UNO semble être le plus proche de ce que j'ai demandé. Bien que POI soit certainement plus grand public, il est trop immature pour ce que je veux.

27 votes

Je ne vois pas en quoi le fait de clore cette question 30 mois après sa dernière modification et plus de 3 ans après qu'elle ait été posée à l'origine va être très productif. Si je changeais le titre en "Comment créer des documents Word enrichis avec une API Java", cela réglerait-il le problème ?

1 votes

Au cas où quelqu'un aurait besoin d'un examen complet de l'api java disponible esupu.com/open-source-office-document-java-api-review

0 votes

Vous pouvez consulter docxtemplater, https://github.com/edi9999/docxtemplater/ qui est une bibliothèque que j'ai créée pour générer des docx à partir de modèles de docx

1voto

schmoopy Points 1741

Dans le passé, j'ai développé des fichiers Word purement basés sur XML. J'ai utilisé .NET, mais le langage ne devrait pas avoir d'importance puisqu'il s'agit vraiment de XML. Ce n'était pas la chose la plus facile à faire (j'ai eu un projet qui l'exigeait il y a quelques années). Ces fichiers ne fonctionnent qu'avec Word 2007 ou supérieur - mais tout ce dont vous avez besoin est le livre blanc de Microsoft qui décrit ce que fait chaque balise. Vous pouvez accomplir tout ce que vous voulez avec les balises de la même manière que si vous utilisiez Word (bien sûr, c'est un peu plus difficile au début).

1voto

JasonPlutext Points 6417

docx4j ou le poi, qui sont tous les deux ASL v2

@wondersofcomputing : iText est en fait libre et open source

1voto

James McMahon Points 14356

Après quelques recherches supplémentaires, je suis tombé sur iText, une API de création de fichiers PDF et RTF. Je pense pouvoir utiliser la génération de RTF pour créer un fichier lisible par Doc qui peut ensuite être édité avec Doc et réenregistré.

Quelqu'un a-t-il de l'expérience avec iText, utilisé de cette manière ?

Bill, les API POI et iText sont très similaires du point de vue de la programmation. J'ai travaillé avec les deux dans le passé et je les ai trouvées toutes deux faciles à utiliser et bien documentées.

Avec iText, vous avez l'avantage de pouvoir passer d'un format à l'autre (RTF et PDF) en modifiant légèrement le code. Si je me souviens bien, le contenu est mis en page à l'aide des mêmes appels, puis défini comme PDF ou RTF à l'aide de quelques lignes de code.

Cependant, je pense que le formatage en RTF est limité par rapport à DOC. Je ne sais pas si vous serez en mesure de mettre en œuvre les fonctionnalités avancées que vous recherchez (tableaux, images en ligne) sans trop de difficultés, voire sans aucune difficulté.

Compte tenu de ce que vous avez dit à propos de HWPF qui n'a pas assez de fonctionnalités pour vos besoins (je n'ai traité que le côté Excel du POI), votre Le mieux serait de convaincre les autorités que le PDF est la meilleure technologie pour ce travail. .

0voto

Bill James Points 7554

Après un peu plus de recherche, je suis tombé sur iText une API de création de fichiers PDF et RTF. Je pense pouvoir utiliser la génération de RTF pour créer un fichier lisible par Doc, qui peut ensuite être modifié à l'aide de Doc et réenregistré.

Quelqu'un a-t-il de l'expérience avec iText, utilisé de cette manière ?

0voto

Bill James Points 7554

Une autre possibilité, puisqu'il s'agit d'une application web.

J'ai pu rendre une page HTML avec le type MIME défini sur "application/msword", ce qui a provoqué le lancement de Word par le navigateur, qui a importé le html sans problème, permettant les modifications et l'enregistrement comme si j'avais créé un vrai document Word.

Les tableaux fonctionnent bien, mais les images, je n'ai pas encore réussi à les faire fonctionner. Il peut s'agir d'une simple balise dans le HTML, ou bien d'une partie distincte de la réponse contenant les données de l'image en binaire, ou encore d'une autre méthode que je n'ai pas encore trouvée :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X