2014-05-28 3 views
1

Как преобразовать файл .doc в FO с использованием класса hwpf.converter.WordToFo? Я пробовал поиск, но я мог только получить слово для преобразования html. Я также прочитал руководство WordToFO на сайте apache-poi, но не смог его получить.преобразование слова в FO с использованием hwpf apache poi

Convert Word to HTML with Apache POI

Я попытался преобразовать .doc в .fo, используя следующий код, но после использования апача-FOP для преобразования файла .fo в .png, я не в состоянии получить изображения представить в файл слова.

package word2fo; 

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileInputStream; 

import javax.swing.text.Document; 
import javax.xml.parsers.DocumentBuilderFactory; 
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.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult; 

import org.apache.poi.hwpf.HWPFDocument; 
import org.apache.poi.hwpf.HWPFDocumentCore; 
import org.apache.poi.hwpf.converter.WordToFoConverter; 
import org.apache.poi.hwpf.converter.WordToFoUtils; 
import org.apache.poi.hwpf.converter.WordToHtmlConverter; 
import org.apache.poi.hwpf.converter.WordToHtmlUtils; 
import org.apache.poi.poifs.filesystem.POIFSFileSystem; 
import org.w3c.dom.Node; 

public class Doc2Fo{ 
    public static void main(String[] args) throws Exception { 
     System.out.println("reached 1"); 
     HWPFDocumentCore wordDocument = WordToFoUtils.loadDoc(new FileInputStream("D:\\Magna.doc")); 
     System.out.println("reached 2"); 
     WordToFoConverter wordToFoConverter = new WordToFoConverter(
       DocumentBuilderFactory.newInstance().newDocumentBuilder() 
         .newDocument()); 
     System.out.println("reached 3"); 
     wordToFoConverter.processDocument(wordDocument); 
     org.w3c.dom.Document htmlDocument = wordToFoConverter.getDocument(); 
     ByteArrayOutputStream out = new ByteArrayOutputStream(); 
     DOMSource domSource = new DOMSource((Node) htmlDocument); 
     StreamResult streamResult = new StreamResult(out); 
     System.out.println("reached 4"); 

     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer serializer; 
     try { 
      serializer = tf.newTransformer(); 
      serializer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); 
       serializer.setOutputProperty(OutputKeys.INDENT, "yes"); 
       //serializer.setOutputProperty(OutputKeys.METHOD, "xml-fo"); 
       serializer.transform(domSource, streamResult); 
       out.close(); 

       String result = new String(out.toByteArray()); 
       System.out.println(result); 

     } catch (TransformerConfigurationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

} 
} 

ответ

0
HWPFDocument hwpfDocument = new HWPFDocument(POIDataSamples.getDocumentInstance().openResourceAsStream(sampleFileName)); 

    WordToFoConverter wordToFoConverter = new WordToFoConverter(XMLHelper.getDocumentBuilderFactory().newDocumentBuilder().newDocument()); 
    wordToFoConverter.processDocument(hwpfDocument); 

    StringWriter stringWriter = new StringWriter(); 

    Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
    transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    transformer.transform(new DOMSource(wordToFoConverter.getDocument()), new StreamResult(stringWriter)); 

    String result = stringWriter.toString(); 
    return result; 
Смежные вопросы