Question

J'ai une nouvelle application sur laquelle je vais travailler pour générer un document Word contenant 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 tables de matières et les tableaux? Quels sont les pièges cachés dans leur utilisation?

Quelques clarifications:

  • Je ne peux pas imprimer de PDF, ils veulent un document Word.
  • Ils utilisent MS Word 2003 (ou 2007), pas OpenOffice
  • L'application s'exécute sur * nix app-server

Ce serait bien si je pouvais commencer par un modèle de doc et remplir quelques espaces avec des tableaux, des graphiques, etc.

Edit: Plusieurs bonnes réponses ci-dessous, chacune avec ses propres fautes par rapport à 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.

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

Était-ce utile?

La solution

En 2007, mon projet a utilisé avec succès les objets réseau universels d'OpenOffice.org . (UNO) pour générer par programme 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 diagrammes, des feuilles de calcul, des présentations, etc. compatibles avec MS-Office. Nous avons pu créer de manière dynamique des documents Word sophistiqués, notamment des graphiques et des tableaux.

Nous avons simplifié le processus en utilisant des modèles de documents MS-Word avec des insertions de signets dans lesquelles le logiciel insérait du contenu. Toutefois, vous pouvez créer 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 pouvant être partagés et modifiés par les utilisateurs finaux avant d'être convertis au format PDF pour la livraison finale et l'archivage.

Vous pouvez éventuellement produire des documents aux formats OpenOffice si vous souhaitez que les utilisateurs utilisent OpenOffice au lieu de MS-Office. Dans notre cas, 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 au sein de la suite. Un kit de développement de logiciel OpenOffice (SDK) contenant des exemples d'applications et le Guide du développeur UNO est disponible.

Je n'ai pas cherché à savoir si la dernière version d'OpenOffice UNO pouvait générer des formats de document MS-Office 2007 Open XML.

Les points importants concernant OpenOffice UNO sont les suivants:

  1. C'est un freeware
  2. Il prend en charge plusieurs langages (Visual Basic, Java, C ++, etc.).
  3. Il est indépendant de la plate-forme (Windows, Linux, Unix, etc.).

Voici quelques sites Web utiles:

Autres conseils

Je pense que les POI Apache peuvent faire l'affaire. Un problème possible, en fonction de l’utilisation que vous visez, pourrait être dû au fait que HWPF en est encore à ses débuts.

  

HWPF   est l'ensemble des API pour la lecture et   écriture de Microsoft Word 97 (-XP)   documents utilisant (uniquement) Java.

Vous pouvez utiliser ceci: http://code.google.com/p/java2word

J'ai mis en œuvre 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. Faites-moi savoir si vous avez besoin d'informations supplémentaires sur la configuration.

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

acclamations Leonardo

Modifier : le projet dans le lien a été déplacé vers https://github.com/leonardoanalalista. / java2word

Essayez Aspose.Words for Java, il s'exécute sur tous les systèmes d'exploitation sur lesquels Java est installé.

Le document sera envoyé au format DOC, DOCX ou RTF si vous avez besoin d’un format de sortie MS Word. Tous sont également pris en charge.

À l'aide de cette API, vous pouvez créer un document à partir de rien, littéralement à partir de nœuds et définir leurs propriétés de formatage. Vous pouvez également utiliser DocumentBuilder qui fournit des méthodes de niveau supérieur, telles que créer une ligne de table, insérer un champ, etc. Les morceaux de plusieurs documents et Aspose.Words fusionneront les styles, le formatage de liste, etc. correctement dans le document résultant.

Vous pourrez insérer un champ de table des matières à l'aide de Aspose.Words, mais à compter d'aujourd'hui, le champ de table des matières nécessitera une mise à jour du champ à l'ouverture du document dans Microsoft Word. Cependant, nous allons libérer le support complet pour les champs COT au début de 2010. Par exemple. il construira une table des matières complète comme le fait MS Word.

Je fais partie de l'équipe Aspose.Words.

Comme cela n’a été mentionné que brièvement, j’aimerais appeler la bibliothèque docx4j, car j’ai eu plus de succès avec docx4j qu’autre chose. La prise en charge des documents Word par Apache POI n’est pas très bonne. De plus, contrairement à Aspose.Words, docx4j est une bibliothèque open source.

Le seul inconvénient est que, 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 de Word 2007, mais Word 2003 et les utilisateurs antérieurs devront installer un pack de compatibilité.

Essayez Aspose.Words 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 au sein de vos applications Java.

     

Aspose.Words for Java prend en charge les formats DOC, OOXML, RTF, HTML et OpenDocument. Avec Aspose.Words, vous pouvez générer, modifier et convertir des documents sans utiliser Microsoft Word.

Vous pouvez utiliser un pont Java COM tel que JACOB . S'il s'agit du côté client, une autre option serait d'utiliser Javascript.

J'ai utilisé Aspose.Words pour effectuer la fusion et le publipostage dans .NET. Je crois qu’ils ont aussi une version Java.

Il existe un outil appelé JODConverter qui se connecte à Open Office pour exposer ses convertisseurs de format de fichier. Il existe des versions disponibles en tant qu'application Web (assis dans tomcat) que vous publiez et un outil de ligne de commande. Je tire du html dessus et convertis au format .doc et pdf avec succès. C’est un projet assez volumineux, qui n’a pas encore été mis en production, mais je pense que je vais l’utiliser. http://sourceforge.net/projects/jodconverter/

iText est vraiment facile à utiliser.

Si vous avez besoin de fichiers doc, vous pouvez appeler abiword (processeur de traitement de texte multi-os gratuit) à partir de la ligne de commande. Il existe plusieurs options de conversion de format de conversion.

docx4j ou un poi, les deux étant ASL v2

@wondersofcomputing: iText est en fait gratuit et open source

  

Après un peu plus de recherches, 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 un document qui peut ensuite être modifié à l'aide de Doc puis ré-enregistré.

     

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

Bill, les API PI 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és faciles à utiliser et bien documentés.

Avec iText, vous avez l’avantage de pouvoir changer de format (RTF et PDF) en modifiant légèrement le code. Si je me souviens bien, le contenu est présenté en utilisant les mêmes appels, puis défini en tant que PDF ou RTF en utilisant quelques lignes de code.

Cependant, je pense que le formatage au format 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 soucis, voire pas du tout.

Étant donné que vous avez dit que si HWPF ne disposait pas de suffisamment de fonctionnalités pour répondre à vos besoins (je n’ai traité que du côté Excel des POI), votre meilleur choix pourrait être de convaincre les pouvoirs que PDF est la meilleure technologie. pour le travail .

J'ai développé des fichiers de mots basés sur du XML pur par le passé. J'ai utilisé .NET, mais le langage ne devrait pas avoir d’importance, car c’est vraiment du XML. Ce n’était pas la chose la plus simple à faire (un projet l’avait demandé il ya quelques années.) Celles-ci ne fonctionnent que dans Word 2007 ou une version ultérieure, mais vous avez besoin du livre blanc de Microsoft qui décrit le fonctionnement de 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 pénible au début.)

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

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

Encore une autre possibilité, puisqu'il s'agit d'une application Web.

J'ai été en mesure de restituer une page HTML avec le type MIME défini sur "application / msword", ce qui a amené le navigateur à créer le mot Word qui importait parfaitement le code HTML, autorisant ainsi les modifications et la sauvegarde, comme si j'avais vrai document Word.

Les tableaux fonctionnent bien, mais les images que je n'avais pas encore travaillées. Cela peut être aussi simple qu’une balise dans le code HTML, ou j’ai peut-être besoin de diffuser une partie distincte de la réponse contenant les données d’image en binaire, ou une autre méthode que je n’ai pas encore trouvée. :)

Même si cela est beaucoup plus tard que la demande, cela pourrait aider les autres. Docmosis fournit une API Java permettant de créer des documents au format doc, pdf ou autre en utilisant des documents comme modèles. Il utilise OpenOffice comme moteur pour effectuer les conversions de format. La manipulation et la constitution de documents sont effectuées par Docmosis lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top