2014-04-27 3 views
3

일부 이미지가 포함 된 문서 .doc으로 변환하고 싶습니다. 이미지를 동일한 위치로 유지하도록 *.html으로 변환하는 방법은 무엇입니까? 이미지를 image이라는 별도의 폴더에 저장하고이 폴더를 이미지 원본으로 사용하는 방법은 무엇입니까?Apache POI를 사용하여 Java에서 .doc을 .html로 변환

내 코드 :이 구현은, 그들에게 이미지 나 링크를 만들지 않습니다

import java.io.BufferedWriter; 
import java.io.DataOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.OutputStreamWriter; 
import java.io.StringWriter; 
import javax.swing.JEditorPane; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.transform.OutputKeys; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 
import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.converter.WordToHtmlConverter; 
import org.apache.poi.hwpf.extractor.WordExtractor; 
import org.apache.poi.xwpf.converter.core.FileImageExtractor; 
import org.apache.poi.xwpf.converter.core.FileURIResolver; 
import org.apache.poi.xwpf.converter.xhtml.XHTMLOptions; 
import org.w3c.dom.Document; 

public class TestWordToHtmlConverter { 
    private File docFile; 
    private File file; 

    public TestWordToHtmlConverter(File docFile) { 
     this.docFile = docFile; 
    } 

    public void convert(File file) { 
    this.file = file; 

     try { 
      FileInputStream finStream=new FileInputStream(docFile.getAbsolutePath()); 
      HWPFDocument doc=new HWPFDocument(finStream); 
      WordExtractor wordExtract=new WordExtractor(doc); 
      Document newDocument = DocumentBuilderFactory.newInstance() .newDocumentBuilder().newDocument(); 
      WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(newDocument) ; 
      wordToHtmlConverter.processDocument(doc); 

      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)); 

      String html = stringWriter.toString(); 
      FileOutputStream fos=new FileOutputStream(new File("html/sample.html")); 
      DataOutputStream dos; 

      try { 
       BufferedWriter out = new BufferedWriter(new OutputStreamWriter(fos,"UTF-8"));  
       out.write(html); 
       out.close(); 
      } 
      catch (IOException e) { 
       e.printStackTrace(); 
      } 

      /*JEditorPane editorPane = new JEditorPane(); 
      editorPane.setContentType("text/html"); 
      editorPane.setEditable(false); 

      editorPane.setPage(file.toURI().toURL()); 

      JScrollPane scrollPane = new JScrollPane(editorPane);  
      JFrame f = new JFrame("Display Html File"); 
      f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      f.getContentPane().add(scrollPane); 
      f.setSize(512, 342); 
      f.setVisible(true);*/ 

     } catch(Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String args[]) { 
     TestWordToHtmlConverter TTC=new TestWordToHtmlConverter(new File("docx/sample.doc")); 
     TTC.convert(TTC.docFile);   
    } 
} 

. 이 AbstractWordConverter.processImage (요소, 부울, 사진) 메소드를 재정 의하여 변경 될 수 있습니다

답변

3

으로는 API 문서에서 말했다 :

WordToHtmlConverter

그들에게 이미지 나 링크를 만들지 않습니다. 이 AbstractWordConverter.processImage(Element, boolean, Picture) 메서드를 재정 의하여 변경할 수 있습니다.

메소드를 오버라이드 (override)하는 방법 당신은 여기에서 찾을 수 있습니다

당신 사용해 볼 수 있습니다 아파치 POI XWPF에 따라 DOCX 2 XHTML 계산기 :

Apache Tika도 사용할 수 있습니다 (상단은 Apache POI). Alfresco에 포함 된 예는 여기에서 찾을 수 있습니다 :

는 또한 많은 다른 컨버터가있다.

+0

감사합니다 ... 이제 해결책이 있습니다. – sudhakar810

+0

안녕하세요. –

+0

지금은 이미지와 그 문제에 대한 해결책을 얻었습니다. 그러나 글 머리 기호 및 번호 매기기와 관련된 문제가 있습니다. 목록이 올바르게 표시되어있는 단락. 번호 매기기가 없습니다. – sudhakar810

관련 문제