163 lines
5.4 KiB
Java
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("."));
|
|
}
|
|
}
|