Existe-t-il une API Java capable de créer des documents Word riches? [fermé]
J'ai une nouvelle application sur laquelle je vais travailler où je dois générer un document Word qui contient des tableaux, des graphiques, une table des matières et du texte. Qu'est-ce qu'une bonne API à utiliser pour cela? Dans quelle mesure Êtes-vous sûr qu'il prend en charge les graphiques, les Toc et les tableaux? Quels sont les gotcha cachés en les utilisant?
, Quelques précisions:
- Je ne peux pas sortir un PDF, ils veulent un document Word.
- ils utilisent MS Word 2003 (ou 2007), pas OpenOffice
- L'Application s'exécute sur * nix serveur d'applications
Ce serait bien si je pouvais commencer avec un doc de modèle et simplement remplir quelques espaces avec des tableaux, des graphiques, etc.
Edit: plusieurs bonnes réponses ci-dessous, chacune avec leurs propres défauts dans la mesure où ma situation actuelle. Difficile de choisir une "réponse finale" d'eux. Je pense que je vais le laisser ouvert, et j'espère que de meilleures solutions seront créées.
Edit: le projet OpenOffice UNO semble être le plus proche de ce que j'ai demandé. Alors que POI est certainement plus grand public, il est trop immature pour ce que je veux.
16 réponses
En 2007, mon projet a été utilisé avec succès OpenOffice.org s Universal Network Objects (uno) interface pour générer par programmation des documents compatibles MS-Word (*.doc), ainsi que les documents PDF correspondants, à partir D'une application Web Java (un framework Struts/JSP).
OpenOffice UNO vous permet également de créer des graphiques, des feuilles de calcul, des présentations compatibles MS-Office,etc. Nous avons pu créer dynamiquement des documents Word sophistiqués, y compris des graphiques et des tableaux.
Nous simplifié le processus en utilisant des documents MS-Word Modèle avec des inserts de signet dans lequel le logiciel contenu inséré, cependant, vous pouvez construire des documents complètement à partir de zéro. L'objectif était de faire en sorte que le logiciel génère des documents de rapport qui pourraient être partagés et modifiés par les utilisateurs finaux avant de les convertir en PDF pour la livraison finale et l'archivage.
Vous pouvez éventuellement produire des documents au format OpenOffice si vous souhaitez que les utilisateurs utilisent OpenOffice au lieu de MS-Office. Dans notre cas où les utilisateurs veulent utiliser les outils MS-Office.
UNO est inclus dans la suite OpenOffice. Nous avons simplement lié notre application Java aux bibliothèques liées à UNO dans la suite. Un kit de Développement LogicielOpenOffice (SDK) est disponible contenant des exemples d'applications et le Guide du développeur UNO.
Je n'ai pas étudié si le dernier OpenOffice UNO peut générer des formats de documents MS-Office 2007 Open XML.
Les choses importantes à propos D'OpenOffice UNO sont:
- c'est un freeware
- Il prend en charge plusieurs langues (par exemple Visual Basic, Java, C++ et autres).
- Il est indépendant de la plate-forme (Windows, Linux, Unix, etc.).
Voici quelques sites Web utiles:
- Ouvrir La Maison de bureau
- Open Office uno Guide du développeur
- OpenOffice Developer's Forum (en particulier les forums" Macros et API "et" extraits de Code").
Je pense que Apache POI peut faire le travail. Un problème possible en fonction de l'utilisation de votre objectif peut être causé par le fait que HWPF est encore en développement précoce.
HWPF est l'ensemble des API pour la lecture et écriture Microsoft Word 97 (- XP) documents utilisant (uniquement) Java.
Vous pouvez utiliser ceci: http://code.google.com/p/java2word
J'ai implémenté cette API appelée Java2Word. avec quelques lignes de code, vous pouvez générer un Document Microsoft Word.
Par exemple.:
IDocument myDoc = new Document2004();
myDoc.getBody().addEle(new Heading1("Heading01"));
myDoc.getBody().addEle(new Paragraph("This is a paragraph...")
Il y a quelques exemples d'utilisation. Fondamentalement, vous aurez besoin d'un fichier jar. Laissez-moi savoir si vous avez besoin de plus d'informations comment le configurer.
* j'ai écrit ceci parce que nous avions une réelle nécessité dans un projet. Plus dans mon blog:
Http ://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html *
Cheers Leonardo
Modifier : projet dans le lien déplacé vers https://github.com/leonardoanalista/java2word
Essayez Aspose.Mots pour Java, il fonctionne sur N'importe quel système d'exploitation où Java est installé.
Il affichera le document en DOC, DOCX ou RTF si vous avez besoin D'un format de sortie MS Word. Tous sont pris en charge aussi bien.
En utilisant cette API, vous pouvez créer un document à partir de zéro, littéralement à partir de nœuds et définir leurs propriétés de formatage. Vous pouvez également utiliser un DocumentBuilder qui fournit des méthodes de niveau supérieur telles que créer une ligne de table, Insérer un champ, etc. Ou vous pouvez copier / joindre/déplacer des parties entre document pré créé existant, disons que vous voulez assembler un contrat, il suffit de saisir et de copier des morceaux de plusieurs documents et Aspose.Les mots fusionneront les styles, le formatage de liste, etc. correctement dans le document résultant.
Vous pourrez insérer un champ TOC en utilisant Aspose.Mots, mais à partir d'aujourd'hui, le champ TOC nécessitera une mise à jour de champ lorsque le document est ouvert dans Microsoft Word. Cependant, nous allons publier un support complet pour les champs TOC au début de 2010. Par exemple, il construira une TOC complète en tant que MS Mot t-il.
Je suis sur L'Aspose.Les mots de l'équipe.
Il n'a été mentionné que brièvement une fois, donc j'aimerais appeler la bibliothèque docx4j, car j'ai eu plus de succès avec docx4j que toute autre chose. Le support d'Apache POI pour les documents Word n'est pas très bon. Aussi, contrairement à Aspose.Mots, docx4j est une bibliothèque open source.
Le seul inconvénient est qu'avec docx4j, vous devez créer des documents au format Office Open XML (docx) plutôt que des documents au format OLE2 (doc). C'est le format par défaut pour Word 2007, mais Word 2003 et les utilisateurs antérieurs devront installez un pack de compatibilité.
Essayez Aspose.Mots pour java.
Aspose.Words for Java est une bibliothèque de classes avancée (commerciale) pour Java qui vous permet d'effectuer une grande variété de tâches de traitement de documents directement dans vos applications Java.
Aspose.Words for Java prend en charge les formats DOC, OOXML, RTF, HTML et OpenDocument. Avec Aspose.Mots vous pouvez générer, Modifier et convertir des documents sans utiliser Microsoft Word.
Vous pouvez utiliser un pont com Java comme JACOB . Si c'est du côté client, une autre option serait d'utiliser Javascript.
J'ai utilisé Aspose.Words pour faire du publipostage dans. NET. je crois qu'ils ont aussi une version Java.
Il y a un outil appelé JODConverter qui se connecte à open office pour exposer ses convertisseurs de format de fichier, il y a des versions disponibles en tant que webapp (se trouve dans tomcat) sur lequel vous postez et un outil de ligne de commande. J'ai tiré html dessus et converti en .doc et pdf avec succès c'est dans un projet assez gros, je n'ai pas encore été mis en ligne mais je pense que je vais l'utiliser. http://sourceforge.net/projects/jodconverter/
IText " est vraiment facile à utiliser.
Si vous requiere les fichiers doc, vous pouvez appeler abiword (free lightweigh multi-OS text procesor) à partir de la ligne de commande, il a plusieurs options de conversion de format de conversion.
Docx4j ou pve, qui sont tous deux ASL v2
@wondersofcomputing: iText est en fait libre et open source
Après un peu plus de recherche, je suis tombé sur iText, une API de création de fichiers PDF et RTF. Je pense que je peux utiliser la génération RTF pour créer un fichier lisible par Doc qui peut ensuite être édité en utilisant Doc et re-enregistré.
Quelqu'un a une expérience avec iText, utilisé de cette façon?
Bill, L'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 les ai trouvés à la fois faciles à utiliser et bien documentés.
Avec iText vous profitez de la possibilité de basculer entre les formats (RTF et PDF) avec des modifications mineures du code. Si je me souviens bien, le contenu est présenté en utilisant les mêmes appels, puis défini comme PDF ou RTF en utilisant quelques lignes de code.
Cependant, je crois que le formatage dans RTF est limité par rapport à DOC. Je ne sais pas si vous serez en mesure d'implémenter les fonctionnalités avancées que vous recherchez (tableaux, images en ligne) sans une quantité décente de tracas, le cas échéant.
Compte tenu de ce que vous avez dit que A propos de HWPF ne pas avoir assez de fonctionnalités pour vos besoins (Je n'ai traité que du côté Excel de POI) votre le meilleur pari peut être de convaincre les pouvoirs que PDF est la meilleure technologie pour le travail .
J'ai développé des fichiers word basés sur XML dans le passé. J'ai utilisé. net, mais le langage ne devrait pas avoir d'importance car C'est vraiment XML. Ce n'était pas la chose la plus facile à faire (avait un projet qui l'exigeait il y a quelques années.) Ceux - ci ne fonctionnent que dans Word 2007 ou au-dessus-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 un peu plus douloureux au départ.)
Après un peu plus de recherche, je suis tombé sur iText , une API de création de fichiers PDF et RTF. Je pense que je peux utiliser la génération RTF pour créer un fichier lisible par Doc qui peut ensuite être édité en utilisant Doc et re-enregistré.
Quelqu'un a une expérience avec iText, utilisé de cette façon?
Encore une autre possibilité, puisqu'il s'agit d'une application web.
J'ai été capable de rendre une page HTML avec le type MIME défini sur "application/msword", ce qui a amené le navigateur à générer Word qui a très bien importé le html, permettant des modifications et des sauvegardes comme si j'avais sorti un vrai document Word.
Les Tables fonctionnent bien, mais les images ne fonctionnaient pas encore. Il peut être aussi facile que juste une balise dans le HTML, ou je peux avoir à diffuser une partie distincte de la réponse contenant les données d'image dans binaire, ou une autre méthode que je n'ai pas encore trouvée. :)
Même si cela est beaucoup plus tard que la requête, cela pourrait aider les autres. Docmosis fournit une API Java pour créer des documents au format doc, pdf, odt en utilisant des documents comme modèles. Il utilise OpenOffice comme moteur pour effectuer les conversions de format. La manipulation de documents et la population sont effectuées par Docmosis lui-même.