Introducción
He escrito un artículo sobre POI Online Preview, que también dijo que también se puede hacer el uso de OpenOffice. Lo presentaré en detalle aquí.
Tengo dos lógica de implementación:
1. Use JodConverter (basado en el servicio OpenOffice) para convertir archivos (.doc, .docx, .xls, .ppt) en formato HTML.
2. Use JodConverter (basado en el servicio OpenOffice) para convertir archivos (.doc, .docx, .xls, .ppt) en formato PDF.
Todos pueden entender la conversión al formato HTML, para que pueda verlo directamente en el navegador, que realiza la función de vista previa en línea; La conversión al formato PDF requiere que el usuario instale Adobe Reader XI, por lo que encontrará que arrastrar el PDF directamente a la página del navegador puede abrir directamente la vista previa, lo que también se da cuenta de la función de vista previa en línea.
Convertir archivos en formato HTML o formato PDF
Sin más ADO, solo suba el código.
paquete com.pdfpreview.util; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.io.ioException; import java.io.inputStream; import java.io.outputStream; import java.net.connectexception; import javaxt.text.ExtEtateTaTaTaTaTaTaTaTaTaTaTaTaTaTeTaTeToTaTeTaxt.ExtAtAt. java.util.date; import com.artofsolving.jodConverter.documentConverter; import com.artofsolving.jodconverter.openoffice.Converter.openoffateCumentConverter;/** *Use JodConverter (basado en el servicio OpenOffice) para convertir archivos ( *.doc, *.docx, *.xls, *.ppt) en formato HTML o formato PDF. * Antes de usar, verifique si el servicio OpenOffice ha sido habilitado. Nombre del proceso de OpenOffice: Software.exe | Software.Bin * * @author yjclsx */public class doc2htmlutil {private static doc2htmlutil doc2htmlutil; / *** Get doc2htmlutil instancia*/ public static sincronizado doc2htmlutil getDoc2htmlUtilInstance () {if (doc2htmlutil == null) {DOC2HTMLUTIL = new Doc2htmlutil (); } return doc2htmlutil; } / ** * Convertir archivo a html * * @param fromFileInputStream: * @throws ioException * / public string file2html (inputStream fromFileInputStream, String tofilePath, string type) lanza ioexception {date date = new feche (); SimpleDateFormat sdf = new SimpleDateFormat ("yyyymmddhhmmss"); String Timesuffix = sdf.format (fecha); Cadena docfilename = null; Cadena 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; } Archivo htmloutputFile = nuevo archivo (tofilePath + file.separatorchar + htmfileName); Archivo docinputfile = nuevo archivo (tofilePath + file.separatorchar + docfileName); if (htmloutputFile.exists ()) htmloutputFile.delete (); htmloutputfile.createenewfile (); if (docinputfile.exists ()) docinputfile.delete (); docinputfile.createenewfile (); / *** Cree el archivo de entrada de FileInputStream*/ try {outputStream OS = new FileOutputStream (DocInputFile); int bytesread = 0; byte [] buffer = new Byte [1024 * 8]; while ((bytesread = fromFileInputStream.read (buffer))! = -1) {OS.Write (buffer, 0, bytesread); } os.close (); fromFileInputStream.close (); } Catch (ioException e) {} OpenOffiCeNnection Connection = new SocketOpenOfficiConnection (8100); intente {Connection.Connect (); } Catch (ConnectException e) {System.err.println ("Hay un error en la conversión de archivo, verifique si se inicia el servicio OpenOffice"); } // Convertir Converter Converter = new OpenOffateCumentConverter (conexión); convertidor.convert (docinputfile, htmloutputfile); Connection.Disconnect (); // Eliminar el archivo de Word después de la conversión docinputfile.delete (); devolver htmfilename; } / ** * Convierta el archivo a pdf * * @param fromFileInputStream: * @throws ioException * / public string file2pdf (inputStream fromFileInputStream, String tofilePath, string type) lanza ioexception {date fecha = nueva fecha (); SimpleDateFormat sdf = new SimpleDateFormat ("yyyymmddhhmmss"); String Timesuffix = sdf.format (fecha); Cadena docfilename = null; Cadena 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; } Archivo htmloutputFile = nuevo archivo (tofilePath + file.separatorchar + htmfileName); Archivo docinputfile = nuevo archivo (tofilePath + file.separatorchar + docfileName); if (htmloutputFile.exists ()) htmloutputFile.delete (); htmloutputfile.createenewfile (); if (docinputfile.exists ()) docinputfile.delete (); docinputfile.createenewfile (); / *** Cree el archivo de entrada de FileInputStream*/ try {outputStream OS = new FileOutputStream (DocInputFile); int bytesread = 0; byte [] buffer = new Byte [1024 * 8]; while ((bytesread = fromFileInputStream.read (buffer))! = -1) {OS.Write (buffer, 0, bytesread); } os.close (); fromFileInputStream.close (); } Catch (ioException e) {} OpenOffiCeNnection Connection = new SocketOpenOfficiConnection (8100); intente {Connection.Connect (); } Catch (ConnectException e) {System.err.println ("Hay un error en la conversión de archivo, verifique si se inicia el servicio OpenOffice"); } // Convertir Converter Converter = new OpenOffateCumentConverter (conexión); convertidor.convert (docinputfile, htmloutputfile); Connection.Disconnect (); // Eliminar el archivo de Word después de la conversión docinputfile.delete (); devolver htmfilename; } public static void main (string [] args) lanza IoException {DOC2HTMLUTIL COC2HTMLUTIL = GetDoc2HTMLUTIlInStance (); Archivo archivo = null; FileInputStream fileInputStream = null; archivo = nuevo archivo ("d: /poi-test/exportexcel.xls"); fileInputStream = new FileInputStream (archivo); // coc2htmlutil.file2html (fileInputStream, "d:/poi-test/openOffice/xls", "xls"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/xls", "xls"); archivo = nuevo archivo ("d: /poi-test/test.doc"); fileInputStream = new FileInputStream (file); // coc2htmlutil.file2html (fileInputStream, "d:/poi-test/openOffice/doc", "doc"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/doc", "doc"); archivo = nuevo archivo ("d:/poi-test/semanal plantilla de informe.ppt"); fileInputStream = new FileInputStream (file); // coc2htmlutil.file2html (fileInputStream, "d:/poi-test/openOffice/ppt", "ppt"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/ppt", "ppt"); archivo = nuevo archivo ("d: /poi-test/test.docx"); fileInputStream = new FileInputStream (archivo); // coc2htmlutil.file2html (fileInputStream, "d:/poi-test/openOffice/docx", "docx"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/docx", "docx"); }} El proceso de conversión a HTML es casi el mismo que la conversión a PDF. El primero se llama xxx.html al crear el archivo de salida, y el último se llama xxx.pdf. Al ejecutar convertter.convert (docinputfile, htmloutputfile);, JodConverter lo convertirá en el archivo correspondiente de acuerdo con el nombre del tipo de archivo.
Tenga en cuenta que si se llaman tanto a File2HTML como a File2PDF en el método principal, se informará un error. Convierta HTML o PDF, y solo puede elegir uno. Además, antes de la ejecución, debe iniciar el servicio de OpenOffice: ejecutar software -headless -accept = ”socket, host = 127.0.0.1, puerto = 8100; urp;" -NOFIRSTSTAartWizard en la ventana de comando en el directorio de OpenOffice para comenzar.
Lo anterior necesita introducir el paquete jar de JodConverter. Espero que sea útil para el aprendizaje de todos, y espero que todos apoyen más a Wulin.com.