Introduction
J'ai écrit un article sur POI Online Preview, qui a également indiqué que l'utilisation d'OpenOffice peut également être réalisée. Je vais le présenter en détail ici.
J'ai deux logiques d'implémentation:
1. Utilisez JodConverter (basé sur OpenOffice Service) pour convertir des fichiers (.doc, .docx, .xls, .ppt) au format HTML.
2. Utilisez JodConverter (basé sur OpenOffice Service) pour convertir des fichiers (.doc, .docx, .xls, .ppt) au format PDF.
Tout le monde peut comprendre la conversion au format HTML, afin que vous puissiez le visualiser directement sur le navigateur, qui réalise la fonction d'aperçu en ligne; La conversion au format PDF nécessite que l'utilisateur installe Adobe Reader XI, vous constaterez donc que la traînée du PDF directement vers la page du navigateur peut ouvrir directement l'aperçu, ce qui réalise également la fonction d'aperçu en ligne.
Convertir les fichiers au format HTML ou au format PDF
Sans plus tarder, téléchargez simplement le code.
package com.pdfpreview.util; import java.io.file; import java.io.fileInputStream; importer java.io.fileoutputStream; import java.io.ioexception; import java.io.inputStream; import java.io.outputstream; import java.net.connectexception; import java.text.Simpledat java.util.date; import com.artofsolving.jodConverter.DocumentConverter; import com.artofsolving.jodconverter.openoffice.connection.openofficeConnection; importOpEnOfficeConnection; com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter; / ** * Utilisez JodConverter (basé sur OpenOffice Service) pour convertir des fichiers (* .doc, * .docx, * .xls, * .ppt) en format html ou pdf. * Avant d'utiliser, veuillez vérifier si le service OpenOffice a été activé. Nom du processus OpenOffice: logiciel.exe | logiciel.bin * * @author yjclsx * / classe publique doc2htmlutil {private static doc2htmlutil doc2htmlutil; / ** * Get doc2htmlutil instance * / public static synchronisé doc2htmlutil getdoc2htmLutilinstance () {if (doc2htmlutil == null) {doc2htmlutil = new doc2htmlutil (); } return doc2htmlutil; } / ** * Convertir le fichier en html * * @param fromfileInputStream: * @throws ioException * / public String file2html (inputStream fromFileInputStream, String toFilePath, String Type) lance ioException {date date = new Date (); SimpledateFormat sdf = new SimpledateFormat ("yyyymmddhhmmss"); String TimeSuffix = sdf.format (date); String docFileName = null; String htmFileName = null; if ("doc" .equals (type)) {docFileName = "doc_" + timeSuffix + ".doc"; htmFileName = "doc_" + timeSuffix + ".html"; } else if ("docx" .equals (type)) {docFileName = "docx_" + timeSuffix + ".docx"; htmFileName = "docx_" + timeSuffix + ".html"; } else if ("xls" .equals (type)) {docFileName = "xls_" + Timesuffix + ".xls"; htmFileName = "xls_" + Timesuffix + ".html"; } else if ("ppt" .equals (type)) {docFileName = "ppt_" + timeSuffix + ".ppt"; htmFileName = "ppt_" + Timesuffix + ".html"; } else {return null; } File htmloutputFile = new File (tofilepath + file.separatorchar + htmFileName); File docinputFile = new File (tofilepath + file.separatorchar + docfilename); if (htmloutputFile.exists ()) htmloutputFile.delete (); htmloutputFile.CreateEwFile (); if (docinputFile.exists ()) docinputFile.delete (); docinputFile.CreateEwFile (); / ** * Créez le fichier d'entrée de FileInputStream * / Try {OutputStream OS = new FileOutputStream (docInputFile); int byTesRead = 0; octet [] tampon = nouveau octet [1024 * 8]; while ((bytesRead = fromFileInputStream.read (tampon))! = -1) {os.write (tampon, 0, bytesRead); } os.close (); FromFileInputStream.Close (); } catch (ioException e) {} OpenOfficeConnection Connection = new socketOpenOfficeConnection (8100); essayez {connection.connect (); } catch (ConnectException E) {System.err.println ("Il y a une erreur dans la conversion de fichiers, veuillez vérifier si le service OpenOffice est démarré."); } // convertir DocumentConverter Converter = new OpenOffiviceDonConverter (connexion); converter.convert (docinputFile, htmloutputFile); connection.disconnect (); // Supprimer le fichier Word après la conversion docinputFile.delete (); retour htmFileName; } / ** * Convertir le fichier en pdf * * @param fromFileInputStream: * @throws ioException * / public String file2pdf (inputStream fromFileInputStream, String toFilePath, String Type) lance ioException {date date = new Date (); SimpledateFormat sdf = new SimpledateFormat ("yyyymmddhhmmss"); String TimeSuffix = sdf.format (date); String docFileName = null; String htmFileName = null; if ("doc" .equals (type)) {docFileName = "doc_" + timeSuffix + ".doc"; htmFileName = "doc_" + timeSuffix + ".pdf"; } else if ("docx" .equals (type)) {docFileName = "docx_" + timeSuffix + ".docx"; htmFileName = "docx_" + timeSuffix + ".pdf"; } else if ("xls" .equals (type)) {docFileName = "xls_" + Timesuffix + ".xls"; htmFileName = "xls_" + Timesuffix + ".pdf"; } else if ("ppt" .equals (type)) {docFileName = "ppt_" + timeSuffix + ".ppt"; htmFileName = "ppt_" + Timesuffix + ".pdf"; } else {return null; } File htmloutputFile = new File (tofilepath + file.separatorchar + htmFileName); File docinputFile = new File (tofilepath + file.separatorchar + docfilename); if (htmloutputFile.exists ()) htmloutputFile.delete (); htmloutputFile.CreateEwFile (); if (docinputFile.exists ()) docinputFile.delete (); docinputFile.CreateEwFile (); / ** * Créez le fichier d'entrée de FileInputStream * / Try {OutputStream OS = new FileOutputStream (docInputFile); int byTesRead = 0; octet [] tampon = nouveau octet [1024 * 8]; while ((bytesRead = fromFileInputStream.read (tampon))! = -1) {os.write (tampon, 0, bytesRead); } os.close (); FromFileInputStream.Close (); } catch (ioException e) {} OpenOfficeConnection Connection = new socketOpenOfficeConnection (8100); essayez {connection.connect (); } catch (ConnectException E) {System.err.println ("Il y a une erreur dans la conversion de fichiers, veuillez vérifier si le service OpenOffice est démarré."); } // convertir DocumentConverter Converter = new OpenOffiviceDonConverter (connexion); converter.convert (docinputFile, htmloutputFile); connection.disconnect (); // Supprimer le fichier Word après la conversion docinputFile.delete (); retour htmFileName; } public static void main (String [] args) lève ioException {doc2htmlutil coc2htmlutil = getDoc2HtmLutilinstance (); Fichier fichier = null; FileInputStream fileInputStream = null; file = new File ("d: /poi-test/exportexcel.xls"); fileInputStream = new FileInputStream (fichier); // coc2htmlutil.file2html (fileInputStream, "d: / poi-test / openoffice / xls", "xls"); coc2htmlutil.file2pdf (fileInputStream, "d: / poi-test / openoffice / xls", "xls"); file = new File ("d: /poi-test/test.doc"); fileInputStream = new FileInputStream (fichier); // coc2htmlutil.file2html (fileInputStream, "d: / poi-test / openoffice / doc", "doc"); coc2htmlutil.file2pdf (fileInputStream, "d: / poi-test / openoffice / doc", "doc"); file = new File ("d: / poi-test / weekly Report template.ppt"); fileInputStream = new FileInputStream (fichier); // coc2htmlutil.file2html (fileInputStream, "d: / poi-test / openoffice / ppt", "ppt"); coc2htmlutil.file2pdf (fileInputStream, "d: / poi-test / openoffice / ppt", "ppt"); file = new File ("d: /poi-test/test.docx"); fileInputStream = new FileInputStream (fichier); // coc2htmlutil.file2html (fileInputStream, "d: / poi-test / openoffice / docx", "docx"); coc2htmlutil.file2pdf (fileInputStream, "d: / poi-test / openoffice / docx", "docx"); }} Le processus de conversion en HTML est presque le même que la conversion en PDF. Le premier est nommé xxx.html lors de la création du fichier de sortie, et ce dernier est nommé xxx.pdf. Lors de l'exécution de Converter.Convert (DocInputFile, htmloutputFile);, JodConverter le convertira en fichier correspondant en fonction du nom de type de fichier.
Notez que si File2Html et File2pdf sont appelés dans la méthode principale, une erreur sera signalée. Convertissez HTML ou PDF, et vous ne pouvez en choisir qu'un. De plus, avant l'exécution, vous devez démarrer le service d'OpenOffice: Exécuter un logiciel -headless -accept = ”socket, host = 127.0.0.1, port = 8100; urp;" -NofirstStstartWizard dans la fenêtre de commande du répertoire OpenOffice pour démarrer.
Ce qui précède doit introduire le package JAR de JodConverter. J'espère que cela sera utile à l'apprentissage de tous, et j'espère que tout le monde soutiendra davantage Wulin.com.