fairnet/src/main/java/seed/utils/SeedCvtDOCXToHtml.java
tolag3 f7d819b7b8 이준호 분쟁조정시스템 커밋
- 분쟁조정 상담 관련 패키지 추가
2024-09-03 15:14:26 +09:00

138 lines
5.1 KiB
Java

package seed.utils;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import org.apache.log4j.Logger;
import org.apache.poi.xwpf.converter.core.FileImageExtractor;
import org.apache.poi.xwpf.converter.core.FileURIResolver;
import org.apache.poi.xwpf.converter.core.XWPFConverterException;
import org.apache.poi.xwpf.converter.xhtml.XHTMLConverter;
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class SeedCvtDOCXToHtml {
private Logger log = Logger.getLogger(this.getClass());
// public static void main(String args[]) {
//
// String rootPath = "F:/javaConvert";
// String filePath = "test/test.docx";
// String output = "F:/javaConvert/test/img/";
//
// new SeedCvtDOCXToHtml().convert(rootPath, filePath, output);
// }
public synchronized void convert(String rootPath, String filePath, String output) {
boolean success = false;
if(filePath.endsWith(".docx")) {
File file = new File(rootPath + "/" + filePath);
if (file.exists()) {
FileInputStream fileInputStream = null;
InputStreamReader inputStreamReader = null;
BufferedReader bufferedReader = null;
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try{
StringBuffer fileHtml = new StringBuffer();
InputStream in = new FileInputStream(file);
XWPFDocument document = new XWPFDocument(in);
XHTMLOptions options = XHTMLOptions.create();
File imageFolder = new File(output + getFileName(filePath) + "/img");
options.setExtractor( new FileImageExtractor(imageFolder));
options.URIResolver( new FileURIResolver(imageFolder));
fileOutputStream = new FileOutputStream(new File(output + getFileName(filePath) + "_org_.jsp"));
XHTMLConverter.getInstance().convert(document, fileOutputStream, options);
//이미지 경로때문에 파일 읽어서 다시 쓰기 해야함(서버경로에서 해당 파일 경로로 변경)
File tmpFile = new File(output + getFileName(filePath) + "_org_.jsp");
if(tmpFile.exists()){
fileInputStream = new FileInputStream(output + getFileName(filePath) + "_org_.jsp");
inputStreamReader = new InputStreamReader(fileInputStream, "EUC-KR");
bufferedReader = new BufferedReader(inputStreamReader);
String fileBuffer = "";
while((fileBuffer = bufferedReader.readLine()) != null){
fileHtml.append(fileBuffer);
fileHtml.append("\n");
}
fileOutputStream = new FileOutputStream(output + getFileName(filePath) + ".jsp");
outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
bufferedWriter = new BufferedWriter(outputStreamWriter);
bufferedWriter.write("<%@ page contentType=\"text/html;charset=utf-8\" %>");
bufferedWriter.write("\n");
bufferedWriter.write(fileHtml.toString().replaceAll("\\\\", "/").replaceAll(output, "/site/"+filePath.substring(0, filePath.lastIndexOf("/"))+"/"+getFileName(filePath)+"/convert/"));
bufferedWriter.flush();
success = true;
}
} catch (FileNotFoundException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (UnsupportedEncodingException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (XWPFConverterException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (IOException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (Exception e) {
log.error("CHECK ERROR:",e);
success = false;
} finally{
if(bufferedReader!=null){try{bufferedReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(inputStreamReader!=null){try{inputStreamReader.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(fileInputStream!=null){try{fileInputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(bufferedWriter!=null){try{bufferedWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(outputStreamWriter!=null){try{outputStreamWriter.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
if(fileOutputStream!=null){try{fileOutputStream.close();}catch(IOException e){log.error("CHECK ERROR:",e);}}
}
}
if(!success){
SeedUtils.setSeedDeleteFiles(output, "");
}else{
SeedUtils.setSeedDeleteFile(output + getFileName(filePath) + "_org_.jsp");
}
}
}
private static String getFileName(String filePath){
int sep = filePath.lastIndexOf("\\") == -1 ? filePath.lastIndexOf("/") : filePath.lastIndexOf("\\");
return filePath.substring( sep + 1 , filePath.lastIndexOf("."));
}
}