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

163 lines
5.4 KiB
Java

package seed.utils;
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.OutputStreamWriter;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.apache.commons.codec.binary.Base64;
import org.apache.log4j.Logger;
import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.converter.WordToHtmlConverter;
import org.apache.poi.hwpf.usermodel.Picture;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class SeedCvtDOCToHtml {
private Logger log = Logger.getLogger(this.getClass());
// public static void main(String args[]){
//
// String filePath = "F:/javaConvert/test/test.doc";
// String output = "F:/javaConvert/test/img/";
//
// new SeedCvtDOCToHtml().convert(filePath, output);
// }
public void convert(String filePath, String output) {
boolean success = false;
if(filePath.endsWith(".doc")) {
File file = new File(filePath);
if (file.exists()) {
POIFSFileSystem fs = null;
FileOutputStream fileOutputStream = null;
OutputStreamWriter outputStreamWriter = null;
BufferedWriter bufferedWriter = null;
try {
fs = new POIFSFileSystem(new FileInputStream(filePath));
HWPFDocument hwpfDocument = new HWPFDocument(fs);
WordToHtmlConverter wordToHtmlConverter = new img(
DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
wordToHtmlConverter.processDocument(hwpfDocument);
StringWriter stringWriter = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperty(OutputKeys.METHOD, "html");
transformer.transform(
new DOMSource(wordToHtmlConverter.getDocument()),
new StreamResult(stringWriter));
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(stringWriter.toString());
bufferedWriter.flush();
success = true;
} catch (TransformerConfigurationException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (TransformerFactoryConfigurationError e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (TransformerException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (ParserConfigurationException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (FactoryConfigurationError e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (FileNotFoundException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (UnsupportedEncodingException e) {
log.error("CHECK ERROR:",e);
success = false;
} catch (IllegalArgumentException 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(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, "");
}
}
}
public class img extends WordToHtmlConverter {
public img(Document document) {
super(document);
}
@Override
protected void processImageWithoutPicturesManager(Element currentBlock,
boolean inlined, Picture picture){
Element imgNode = currentBlock.getOwnerDocument().createElement("img");
StringBuilder sb = new StringBuilder();
sb.append(Base64.encodeBase64String(picture.getRawContent()));
sb.insert(0, "data:"+picture.getMimeType()+";base64,");
imgNode.setAttribute("src", sb.toString());
currentBlock.appendChild(imgNode);
}
}
private static String getFileName(String filePath){
int sep = filePath.lastIndexOf("\\") == -1 ? filePath.lastIndexOf("/") : filePath.lastIndexOf("\\");
return filePath.substring( sep + 1 , filePath.lastIndexOf("."));
}
}