2009-11-27 7 views
0

J'ai un problème: mon application doit convertir des documents MS Word (importés d'un autre système) en documents RTF, afin d'être manipulés avec des API OOo et d'être à l'abri des erreurs (pour l'incompatibilité de codage les raisons).Documents MS Word aux documents RTF

Je vous demande: comment puis-je manipuler des documents MS Word directement depuis mon application Java? Il y a des API (comme POI ou OOo) qui me permettent de faire mon travail sans incompatibilité de codage?

Mon système s'exécute sur des machines serveur Linux (comme tous les systèmes de production pour le public) et j'ai installé uniquement OOo. En utilisant les API OOo java, je peux ouvrir, manipuler et enregistrer les documents, mais, au cours de cette dernière période, je vois beaucoup de problèmes concernant l'incompatibilité pour le codage entre le codage fermé Ms Word et le format de document OOo opend codage (je me réfère à swriter). Dans de nombreux cas, liste avec des puces spécifiques (par exemple, '-' ou liste imbriquée), numérotation des pages (par exemple 1 du format x), et beaucoup d'autres options de formatage, le document de sortie montre beaucoup d'erreurs dues à , Je pense, l'incompatibilité entre les deux formats de codage. Maintenant, j'étudie les fonctionnalités d'Apache POI afin de comprendre si je peux ouvrir Ms Word avec, et enregistrer le document au format RTF qui est et un format d'échange capable de réduire l'incompatibilité au niveau minimal.

Avez-vous le même problème? Pouvez-vous m'indiquer une librairie Java open source plus powefull de POI? Ou, pouvez-vous me proposer une approche combinée telle que POI + iText pour faire l'étape de conversion ms word à RTF?

Répondre

1

Quand on m'a demandé de fournir un moyen de convertir de manière fiable un doc à un tiff, j'ai fait quelques recherches. Il existe un certain nombre de bibliothèques, gratuites et commerciales, qui prétendent pouvoir rendre ms.docs. Aucun d'eux ne fournit un rendu 100% précis.

La façon dont je devais le faire est d'exécuter MS Word dans un wrapper et de le manipuler pour faire ce dont j'ai besoin à travers l'OLE Automation. Cela (en cours d'exécution Word en arrière-plan) en lui-même a quelques pièges, mais avec un design réfléchi, vous pouvez le faire fonctionner.

Votre cas est encore plus facile que le mien car tout ce dont vous avez besoin est d'ouvrir le document, puis de l'enregistrer sous.

Modifier

@Paolo - Voilà. J'ai vécu la même chose - en évaluant divers paquets, OO inclus et en trouvant qu'ils sont mmmm ... moins que précis. Bien sûr, tout dépend de la rigueur avec laquelle vos clients traitent le formatage des documents. Le mien était extrêmement pointilleux - jusqu'à la taille des marges et le positionnement de l'image.

Une autre option serait de donner (et obtenir l'approbation de) une liste d'imprécisions. Malheureusement, avec chaque nouveau document, vous courrez la chance d'en trouver un nouveau

+0

Merci, mais, comme je l'ai dit dans mon précédent answear, sur le serveur Linux Je n'ai pas Ms Office installé, donc je fais des recherches une bibliothèque Java qui me permet de transformer les programme Ms Word Documents au format RTF pour travailler sur ce dernier type en mode compatibilité avec l'interface API OOo. Merci pour vos vêtements. Cordialement, -Paolo P.S .: Quelqu'un sait une telle bibliothèque Java (à savoir plus de POI powerfull)? –

0

Si Word est installé sur votre ordinateur cible, vous pouvez utiliser les interfaces Microsoft Office Automation. C'est un ensemble de composants COM que vous pouvez utiliser pour ouvrir, créer, enregistrer des documents Word. (Vous pouvez contrôler par programme une installation de Microsoft Word par programmation.)

Si Word est installé, vous devez disposer d'une bibliothèque de types enregistrée appelée "Bibliothèque d'objets Microsoft Word XX.X". Je ne sais pas comment accéder à COM à partir de Java.

+0

Pourquoi la downvote? –

0

Docvert permet de configurer un service Web pour convertir des documents Word au format Open Office.Il craps sur les objets OLE cependant.

+0

Bonjour poche, tout d'abord, merci pour votre réponse! J'ai besoin d'une suite d'API Java qui me permet d'automatiser le processus de manipulation de documents MS Word. En ce moment, comme solution de rechange, nous obtenons la version PDF du document et travaillons avec iText et sa capacité de filigranage; mais, comme vous pouvez le comprendre, c'est une solution très limitée. Regars, - Paolo –

Questions connexes