標籤:out rto date util ack 通過 serialize exec mkdir
本來是想將REF檔案直接轉換成html檔案,但是由於亂碼的問題沒辦法解決,所以選擇了一個折中的辦法,先將RTF轉換成DOC的文檔,再利用HWPFDocument類將DOC檔案轉換為html檔案
1、下載OpenOffice安裝在需要進行文書轉換的電腦上,:http://rj.baidu.com/soft/detail/15989.html?ald
2、在對應程式中添加jar包,對應下載jar包百度雲端硬碟地址: 擷取碼:
或者說直接在網上搜尋jodconverter-core-3.0-beta-4,下載下來,裡面有對應的包
3、寫java類,運行項目進行調試轉換
package com.thunisoft.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.artofsolving.jodconverter.OfficeDocumentConverter;
import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
import org.artofsolving.jodconverter.office.OfficeManager;
public class TestRTF2Word {
private static String OFFICE_HOME = "C:\\Program Files (x86)\\OpenOffice 4"; // "/opt/libreoffice5.0";
//private static int port[] = { 8100 };
private static int port = 8100;
private static OfficeManager officeManager;
// 開啟伺服器
public static void startService() {
DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
try {
System.out.println("準備啟動openoffice服務....");
configuration.setOfficeHome(OFFICE_HOME);// 設定OpenOffice.org安裝目錄
configuration.setPortNumbers(port);
configuration.setTaskExecutionTimeout(1000 * 60 * 5L);// 設定任務執行逾時為5分鐘
configuration.setTaskQueueTimeout(1000 * 60 * 60 * 24L);// 設定任務隊列逾時為24小時
officeManager = configuration.buildOfficeManager();
officeManager.start(); // 啟動服務
System.out.println("office轉換服務啟動成功!");
} catch (Exception ce) {
System.out.println("office轉換服務啟動失敗!詳細資料:" + ce);
System.exit(0);
}
}
// 關閉伺服器
public static void stopService() {
System.out.println("關閉office轉換服務....");
if (officeManager != null) {
officeManager.stop();
}
System.out.println("關閉office轉換成功!");
}
public static void main(String[] args) {
startService();
OfficeDocumentConverter converter = new OfficeDocumentConverter(
officeManager);
try {
File outFile = new File("E:\\rtf\\1\\qwe123.doc");
if (!outFile.getParentFile().exists()) {
outFile.getParentFile().mkdirs();
}
System.out.println(outFile.exists());
File inFile = new File("E:\\rtf\\1\\3606c3de7612-ffa5-44cd-bbc1-f5312de0aa3d.rtf");
System.out.println(inFile.exists());
converter.convert(inFile, outFile);
} catch (Exception e) {
e.printStackTrace();
} finally {
stopService();
}
}
}
4、轉換完成後可以將其存放到某個目錄下,通過以下方式轉換為html檔案
private static ByteArrayOutputStream docHandler(String fileName) {
InputStream is = new FileInputStream(fileName);
HWPFDocument wordDocument = null;
wordDocument = new HWPFDocument(is);
WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory
.newInstance().newDocumentBuilder().newDocument());
// wordToHtmlConverter.setPicturesManager(new PicturesManager() {
// public String savePicture(byte[] content, PictureType pictureType,
// String suggestedName, float widthInches, float heightInches) {
// return "pic/" + suggestedName;
// }
// });
wordToHtmlConverter.processDocument(wordDocument);
// save pictures
List<Picture> pics = wordDocument.getPicturesTable().getAllPictures();
if (pics != null) {
for (int i = 0; i < pics.size(); i++) {
Picture pic = (Picture) pics.get(i);
try {
pic.writeImageContent(new FileOutputStream(URLDecoder.decode(getPicPath(),"UTF-8")
+ pic.suggestFullFileName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
Document htmlDocument = wordToHtmlConverter.getDocument();
ByteArrayOutputStream out = new ByteArrayOutputStream();
DOMSource domSource = new DOMSource(htmlDocument);
StreamResult streamResult = new StreamResult(out);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer serializer = tf.newTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
// serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
serializer.setOutputProperty(OutputKeys.METHOD, "html");
serializer.transform(domSource, streamResult);
out.close();
return out;
}
java程式REF檔案轉DOC檔案