java程式REF檔案轉DOC檔案

來源:互聯網
上載者:User

標籤: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檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.