web-dev-qa-db-fra.com

Conversion de la documentation Word en HTML par programme en Java

J'ai besoin de convertir un document Word en fichier (s) HTML en Java. La fonction prendra un document Word en entrée et la sortie sera un fichier html basé sur le nombre de pages du document Word, c’est-à-dire si le document Word a 3 pages, il y aura 3 fichiers HTML générés avec le saut de page requis.

J'ai recherché des API open source/non commerciales qui permettent de convertir doc en HTML sans résultat. Quiconque a déjà fait ce genre de travail auparavant aide s'il vous plaît.

Merci

21
kaychaks

Nous utilisons tm-extracteurs ( http://mvnrepository.com/artifact/org.textmining/tm-extractors ) et nous retournons à Aspose ( http: //www.aspose. com / ). Les deux ont des API Java natives.

3
Chase Seibert

Je recommande le JODConverter . Il utilise OpenOffice.org, qui fournit sans doute les meilleurs filtres d'importation/exportation pour les formats OpenDocument et Microsoft Office disponibles aujourd'hui.

JODConverter propose de nombreux documents, scripts et tutoriels pour vous aider.

6
Fisher

J'ai utilisé avec succès l'approche suivante dans les systèmes de production où le nouveau format XML MS Word n'est pas disponible:

Générer un processus qui fait quelque chose de similaire à:

http://www.oooninja.com/2008/02/batch-command-line-file-conversion-with.html

Vous voudrez probablement démarrer openoffice une fois au démarrage de votre programme et appeler le script python autant de fois que nécessaire pendant votre programme (avec une sorte de vérification pour vous assurer que le processus de bureautique est toujours présent).

L'autre option consiste à générer le type de commande suivant chaque fois que vous devez effectuer la conversion:

ooffice -headless "macro: // <chemin d'accès à la macro vb à convertir, avec le paramètre pointant sur fichier>"

J'ai utilisé l'approche macro plusieurs fois et cela fonctionne bien (désolé, le code macro n'est pas disponible).

Bien qu'il existe des mécanismes pour le faire via MS Word, ils ne sont pas faciles à partir de Java et nécessitent d'autres programmes de support pour piloter MS Word via OLE.

J'ai déjà utilisé abiword auparavant, ce qui fonctionne bien pour de nombreux documents, mais qui peut être confondu avec des documents plus complexes (le bureau semble gérer tout ce que je lui ai jeté). Abiword a une interface de ligne de commande légèrement plus facile à convertir que celle de ooffice.

4
Jamie Love

Il est plus facile de le faire dans le nouveau docx MS Word car le format est au format XML . Vous pouvez utiliser un fichier XSL pour transformer le document Word au format XML en un format HTML.

Si toutefois votre document Word est dans une ancienne version, vous pouvez utiliser la bibliothèque de POI http://poi.Apache.org/ puis accéder à cela et générer un objet Java. convertissez-le au format HTML à l'aide d'une bibliothèque HTML HTML 

http://www.dom4j.org/dom4j-1.4/apidocs/org/dom4j/io/HTMLWriter.html

2
Sridhar Visvanath

J'ai essayé de cette façon et son travail avec moi de ce site http://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML

Cela fonctionne uniquement avec docx pour le convertir en images HTML incluses à l'intérieur de ce document Word.

    // 1) Load DOCX into XWPFDocument
    InputStream doc = new FileInputStream(new File("c:/document.docx"));
    XWPFDocument document = new XWPFDocument(doc);

   // 2) Prepare XHTML options (here we set the IURIResolver to load images from a "Word/media" folder)
            XHTMLOptions options = XHTMLOptions.create(); //.URIResolver(new FileURIResolver(new File("Word/media")));;

            // 3) Extract image
            String root = "target";
            File imageFolder = new File( root + "/images/" + doc );
            options.setExtractor( new FileImageExtractor( imageFolder ) );
            // 4) URI resolver
            options.URIResolver( new FileURIResolver( imageFolder ) );


            OutputStream out = new FileOutputStream(new File("c:/document.html"));
            XHTMLConverter.getInstance().convert(document, out, options);

J'espère que cela résoudra votre problème

Je vois que ce fil apparaît dans des liens externes et comporte des publications occasionnelles. J'ai donc pensé poster une mise à jour (j'espère que personne ne la dérange). OpenOffice continue d'évoluer et la version 3.2 améliore à nouveau les filtres d'exportation d'importation Word. OpenOffice et Java pouvant fonctionner sur de nombreuses plates-formes, les systèmes Java peuvent utiliser directement l'API OpenOffice UNO pour importer/manipuler/exporter des documents dans de nombreux formats (y compris Word et pdf) ou utiliser une bibliothèque du type JODReports ou Docmosis faciliter. Les deux ont des options libres/ouvertes.

1
Paul Jowett

Si c'est un docx, vous pouvez utiliser docx4j (ASL v2). Ceci utilise XSLT pour créer le code HTML.

Cependant, cela vous donnera un code HTML unique pour l'ensemble du document.

Si vous voulez un code HTML par page, vous pouvez créer quelque chose avec la balise lastRenderedPageBreak que Word place dans le docx (en supposant que vous ayez utilisé Word pour le créer).

1
JasonPlutext

Si vous ciblez des fichiers Word 2007 en utilisant le format ooxml, cet article pourrait vous aider… .. Il existe également le projet Ooxml4j qui implémente la bibliothèque ooxml for Java.

Si vous ciblez les fichiers binaires, c’est un autre problème.

0
Vincent Ramdhanie

vous pouvez utiliser micrsoft office online

d'abord, sur la requête côté serveur https://view.officeapps.live.com/op/view.aspx?src= 'votre URL de fichier doc en ligne'

puis utilisez jsoup parse le résultat HTML 

lors de l'accès depuis un mobile, le code HTML sera encapsulé.

0
Seven4X

Vous devez trouver la spécification de document MS Word (puisqu'il s'agit essentiellement d'un cliché binaire de tout ce qui se trouve dans Word à ce moment-là), puis la parcourir lentement élément par élément en convertissant les "objets/états" de MS Word en HTML. équiv. vous pourrez peut-être trouver un script à faire pour vous car ce n'est pas vraiment un travail amusant et je vous le déconseille (convertir des formats de fichier ou même lire à partir de fichiers commerciaux par vous-même est toujours difficile et souvent incomplet). PS: seulement google doc2html

0
DavidG
import officetools.OfficeFile; // package available at www.dancrintea.ro/doc-to-pdf/
...
FileInputStream fis = new FileInputStream(new File("test.doc"));
FileOutputStream fos = new FileOutputStream(new File("test.html"));
OfficeFile f = new OfficeFile(fis,"localhost","8100", true);
f.convert(fos,"html");

Toutes les conversions possibles:

doc -> pdf, html, txt, rtf

xls -> pdf, html, csv

ppt -> pdf, swf

html -> pdf

0
Zorbal