使用Apache POI将.docx转换为html并且不获取任何文本

yam*_*ams 2 java ms-word apache-poi

我当然有一些代码将.doc文档转换为html,但我用来将.docx转换为文本的代码却不能得到文本并将其转换.以下是我的代码.

private void convertWordDocXtoHTML(File file) throws ParserConfigurationException, TransformerConfigurationException, TransformerException, IOException {
    XWPFDocument wordDocument = null;
    try {
        wordDocument = new XWPFDocument(new FileInputStream(file));
    } catch (IOException ex) {
        Exceptions.printStackTrace(ex);
    }

    WordToHtmlConverter wordToHtmlConverter = new WordToHtmlConverter(DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument());
    org.w3c.dom.Document htmlDocument = wordToHtmlConverter.getDocument();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    DOMSource domSource = new DOMSource(htmlDocument);
    StreamResult streamResult = new StreamResult(out);

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

    String result = new String(out.toByteArray());
    acDocTextArea.setText(newDocText);
    String htmlText = result;

}
Run Code Online (Sandbox Code Playgroud)

关于为什么这不起作用的任何想法将非常感激.ByteArrayOutput应返回整个html但它是空的并且没有文本.

Jar*_*zek 5

Mark,您使用的是仅支持.doc格式的HWPF软件包,请参阅此说明.该文档还提到了.docx通过XWPF包提供文件接口的尝试.但是,他们似乎缺乏人力资源,鼓励用户提交扩展.但是应该提供有限的功能,提取文本必须是其中之一.

您还应该看到这个问题:如何使用apache POI提取docx(上面的单词2007).

  • 我正在使用XWPFDocument从.docx获取文本,该文本工作得很好,但我需要的是还将orignal .docx文件转换为html文件.我可以获得的文件的文本.但我无法得到的是文件的html版本.当我使用单词提取器时,我从.docx获取文本.由于某种原因,我无法将文件转换为html,并且没有给出错误. (2认同)