Comment prévisualiser des fichiers dans une application Java?

J’utilise un JTree pour parcourir le contenu d’un dossier et je veux que lorsqu’un utilisateur clique sur un fichier, le logiciel en affiche un aperçu (une capture d’écran de sa première page).

Les fichiers sont principalement des documents Office et PDF.

Je parviens à le faire pour un fichier PDF en utilisant un module téléchargé depuis Sun, mais je voudrais savoir s’il existe un moyen de le faire en utilisant un logiciel (de préférence des JAR) ou même l’API Windows intégrée.

Je pensais à convertir le fichier en PDF, puis à faire un aperçu de ce PDF, mais ce n’est pas optimal.

Des idées ?

J’ai le même problème et le meilleur que j’ai trouvé après quelques jours de recherche sur Google suit.

Alfresco a le même problème et l’a résolu avec:

  • Un open office fonctionnant en mode serveur (socket) et tous les documents bureautiques sont envoyés par alfresco pour les ouvrir afin de les convertir en PDF
  • Ces fichiers PDF sont convertis en visualiseur .swf grâce à SWFTOOLS
  • Ce fichier .swf est intégré au code HTML
  • Pour les images, il utilise ImageMagick pour créer une petite version du fichier, je suppose

Personnellement, je vais essayer de le mettre en œuvre de cette façon:

  • Conversion de documents bureautiques au format PDF grâce à un bureau ouvert en mode socket
  • Transformez la première page du PDF en un fichier PNG grâce à la bibliothèque JPedal (version LGPL)
  • Montrer que le PNG à l’utilisateur final
  • Pour les images, j’utiliserais peut-être aussi ImageMagick … mais pour l’instant, j’utilise l’ API Seam Image.scaleToFit

J’ai eu le même problème aussi et suis tombé sur ce fil. En commençant par la solution d’Anthony, j’utilise Libre Office en mode socket pour convertir des documents Office directement en PNG. Malheureusement, cela n’est pas possible à partir de fichiers PDF. Voici un bon aperçu des moyens possibles.

unoconv --connection 'socket,host=127.0.0.1,port=2220,tcpNoDelay=1;urp;StarOffice.ComponentContext' -f png -e PageRange=1 your_file_name.extension 

Petite référence pour démarrer Libre Office en mode socket: cliquez sur moi

Je l’ai demandé il y a longtemps: solution