1. 程式人生 > >java web通過openoffice實現文件網頁預覽(類似百度文庫)

java web通過openoffice實現文件網頁預覽(類似百度文庫)

  最近研究了一下在網頁上預覽文件(包括office文件和txt、pdf),發現用openoffice+FlexPlayer實現比較理想,就參考了https://blog.csdn.net/ITBigGod/article/details/80300177#commentBox這個部落格自己研究了一下。原始碼如下https://files.cnblogs.com/files/csdeblog/OpenOfficeDemo.zip

需要安裝,在程式中修改這個位置

 

 同時命令列開啟openoffice,需要注意的是整個要轉換的檔案目錄不能包含空格,而且txt需要轉為utf-8,具體如下

ChangeFileCode類原始碼

package cn.com.mvc.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;

public class ChangeFileCode { // 讀取的檔案 private String fileIn; // 讀取時檔案用的編碼 private String fileInEn; // 寫出的檔案 private String fileOut; // 寫出時檔案用的編碼 private String fileOutEn; /** * * 獲取原始檔的編碼 * * @param filePath * 原始檔所在的絕對路徑 * *
@return * */ public String getFileEnCode(String filePath) { InputStream inputStream = null; String code = ""; try { inputStream = new FileInputStream(filePath); byte[] head = new byte[3]; inputStream.read(head); code = "gb2312"; if (head[0] == -1 && head[1] == -2) code = "UTF-16"; if (head[0] == -2 && head[1] == -1) code = "Unicode"; if (head[0] == -17 && head[1] == -69 && head[2] == -65) code = "UTF-8"; System.out.println(code); } catch (Exception e) { e.printStackTrace(); } finally { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return code; } public void setFileIn(String fileInPath, String fileInEncoding) { this.setFileIn(fileInPath); this.setFileInEn(fileInEncoding); } public void setFileOut(String fileOutPath, String fileOutEncoding) { this.setFileOut(fileOutPath); this.setFileOutEn(fileOutEncoding); } public void start() { String str = this.read(fileIn, fileInEn); this.write(fileOut, fileOutEn, str); } /** * * 讀檔案 * * * * @param fileName * * @param encoding * */ private String read(String fileName, String encoding) { try { BufferedReader in = new BufferedReader(new InputStreamReader( new FileInputStream(fileName), encoding)); String string = ""; String str = ""; while ((str = in.readLine()) != null) { string += str + "\n"; } in.close(); return string; } catch (Exception ex) { ex.printStackTrace(); } return ""; } /** * * 寫檔案 * * * * @param fileName * * 新的檔名 * * @param encoding * * 寫出的檔案的編碼方式 * * @param str * */ private void write(String fileName, String encoding, String str) { try { Writer out = new BufferedWriter(new OutputStreamWriter( new FileOutputStream(fileName), encoding)); out.write(str); out.close(); } catch (Exception ex) { ex.printStackTrace(); } } public String getFileIn() { return fileIn; } public void setFileIn(String fileIn) { this.fileIn = fileIn; } public String getFileInEn() { return fileInEn; } public void setFileInEn(String fileInEn) { this.fileInEn = fileInEn; } public String getFileOut() { return fileOut; } public void setFileOut(String fileOut) { this.fileOut = fileOut; } public String getFileOutEn() { return fileOutEn; } public void setFileOutEn(String fileOutEn) { this.fileOutEn = fileOutEn; } }

然後基本沒啥問題了,openoffice和flowpaper的安裝包可在https://share.weiyun.com/51jOQjB和https://share.weiyun.com/54GLAod下載。