Introdução
Eu escrevi um artigo sobre a PoI Online Preview, que também disse que o uso do OpenOffice também pode ser feito. Vou apresentá -lo em detalhes aqui.
Eu tenho duas lógicas de implementação:
1. Use JodConverter (com base no serviço OpenOffice) para converter arquivos (.doc, .docx, .xls, .ppt) em formato html.
2. Use JodConverter (com base no serviço OpenOffice) para converter arquivos (.doc, .docx, .xls, .ppt) em formato PDF.
Todos podem entender a conversão para o formato HTML, para que você possa visualizá -lo diretamente no navegador, que realiza a função de visualização on -line; A conversão para o formato PDF exige que o usuário instale o Adobe Reader XI, para que você descubra que arrastar o PDF diretamente para a página do navegador pode abrir diretamente a visualização, o que também realiza a função de visualização on -line.
Converta arquivos em formato HTML ou formato PDF
Sem mais delongas, basta fazer o upload do código.
pacote com.pdfPreview.util; importar java.io.file; importar java.io.fileInputStream; importar java.io.fileOutputStream; importar java.io.ioException; import java.io.InputStream; import java.io.outTream; import java.io.io.connElect; java.util.date; import com.artofSolving.jodconverter.documentConverter; import com.artofsolving.jodconverter.openoffice.connection.openofficonConnection; importação com.artofSolving.jodConver.openoffice.Connection.SockoPenOfnEfficenlection; com.artofsolving.jodconverter.openoffice.converter.openofficedocumentConverter;/** *Use jodconverter (baseado no serviço de abertura) para converter arquivos ( *.doc, *.docx, *.xls, *.ppt) em formato html ou pdf. * Antes de usar, verifique se o serviço OpenOffice foi ativado. Nome do processo do OpenOffice: software.exe | software.bin * * @author yjclsx */public classe doc2htmlutil {private static doc2htmlutil doc2htmlutil; / *** Obtenha Doc2htmlutil Instância*/ public estático sincronizado doc2htmlutil getDoc2htmlutilInstance () {if (doc2htmlutil == null) {doc2htmlutil = new doc2htmlutil (); } retornar doc2htmlutil; } / ** * Converta o arquivo em html * * @param FromFileInputStream: * @THOWSoException * / public String file2html (inputStream FromFileInputStream, string tofilepath, string type) lança IoException {Date = new Date (); SimpledateFormat sdf = new SimpleDateFormat ("yyyymmddhhmmss"); String timeffix = sdf.format (data); 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; } Arquivo htmloutputfile = novo arquivo (tofilepath + file.separatorchar + htmfileName); Arquivo docinputfile = novo arquivo (tofilepath + file.separatorchar + docfilename); if (htmloutputfile.exists ()) htmloutputfile.delete (); htmloutputfile.createNewFile (); if (docinputfile.exists ()) docinputfile.delete (); docinputfile.createnewfile (); / *** Crie o arquivo de entrada a partir do FileInputStream*/ try {outputStream OS = new FileOutputStream (docinputFile); int bytesread = 0; byte [] buffer = novo byte [1024 * 8]; while ((bytesRead = FromFileInputStream.read (buffer))! = -1) {os.Write (buffer, 0, bytesRead); } os.close (); FromFileInputStream.close (); } catch (ioException e) {} OpenOfficeConnection Connection = new SocketOpeNOfficeConnection (8100); tente {conexão.connect (); } catch (ConnectException e) {System.err.println ("Há um erro na conversão do arquivo, verifique se o serviço OpenOffice foi iniciado."); } // Converter DocumentConverter converter = new OpenOffordocumentConverter (conexão); converter.convert (docinputfile, htmloutputfile); conexão.disconnect (); // exclua o arquivo do Word após a conversão docinputfile.delete (); retornar htmfilename; } / ** * Converta o arquivo em pdf * * @param de FileInputStream: * @THOWSoException * / public String file2pdf (inputStream FromFileInputStream, String TofilePath, String Type) lança IoException {date = new Date (); SimpledateFormat sdf = new SimpleDateFormat ("yyyymmddhhmmss"); String timeffix = sdf.format (data); 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; } Arquivo htmloutputfile = novo arquivo (tofilepath + file.separatorchar + htmfileName); Arquivo docinputfile = novo arquivo (tofilepath + file.separatorchar + docfilename); if (htmloutputfile.exists ()) htmloutputfile.delete (); htmloutputfile.createNewFile (); if (docinputfile.exists ()) docinputfile.delete (); docinputfile.createnewfile (); / *** Crie o arquivo de entrada a partir do FileInputStream*/ try {outputStream OS = new FileOutputStream (docinputFile); int bytesread = 0; byte [] buffer = novo byte [1024 * 8]; while ((bytesRead = FromFileInputStream.read (buffer))! = -1) {os.Write (buffer, 0, bytesRead); } os.close (); FromFileInputStream.close (); } catch (ioException e) {} OpenOfficeConnection Connection = new SocketOpeNOfficeConnection (8100); tente {conexão.connect (); } catch (ConnectException e) {System.err.println ("Há um erro na conversão do arquivo, verifique se o serviço OpenOffice foi iniciado."); } // Converter DocumentConverter converter = new OpenOffordocumentConverter (conexão); converter.convert (docinputfile, htmloutputfile); conexão.disconnect (); // exclua o arquivo do Word após a conversão docinputfile.delete (); retornar htmfilename; } public static void main (string [] args) lança ioexception {doc2htmlutil coc2htmlutil = getDoc2htmlutilInstance (); Arquivo de arquivo = null; FileInputStream fileInputStream = null; arquivo = novo arquivo ("d: /poi-test/exportExcel.xls"); fileInputStream = new FileInputStream (FILE); // coc2htmlutil.file2html (FILEInputStream, "d:/poi-test/openOffice/xls", "xls"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-teste/openOffice/xls", "xls"); arquivo = novo arquivo ("d: /poi-test/test.doc"); fileInputStream = new FileInputStream (FILE); // coc2htmlutil.file2html (FILEInputStream, "d:/poi-test/openOffice/doc", "doc (doc"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/doc", "doc"); arquivo = novo arquivo ("D:/POI-TEST/Weekly Report Model.ppt"); fileInputStream = new FileInputStream (FILE); // coc2htmlutil.file2html (FILEInputStream, "d:/poi-test/OpenOffice/ppt", "ppt"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-teste/openOffice/ppt", "ppt"); arquivo = novo arquivo ("d: /poi-test/test.docx"); fileInputStream = new FileInputStream (FILE); // coc2htmlutil.file2html (FILEInputStream, "d:/poi-test/OpenOffice/docx", "docx"); coc2htmlutil.file2pdf (fileInputStream, "d:/poi-test/openOffice/docx", "docx"); }} O processo de conversão para HTML é quase o mesmo que a conversão em PDF. O primeiro é nomeado xxx.html ao criar o arquivo de saída e o último é nomeado xxx.pdf. Ao executar o converter.convert (docinputfile, htmloutputfile);, jodconverter o converterá no arquivo correspondente de acordo com o nome do tipo de arquivo.
Observe que se o arquivo2html e o arquivo 2pdf forem chamados no método principal, um erro será relatado. Converta HTML ou PDF e você pode escolher apenas um. Além disso, antes da execução, você precisa iniciar o serviço do OpenOffice: Execute Software -sem cabeça -Acept = ”Socket, host = 127.0.0.1, porta = 8100; URP;" -NofirststartWizard na janela de comando no diretório do OpenOffice para iniciar.
O acima precisa apresentar o pacote JAR de JodConverter. Espero que seja útil para o aprendizado de todos, e espero que todos apoiem mais o wulin.com.