使用JAVA将.docx转换为HTML

8
我尝试使用 WordToHtmlConverter 将 .doc 转换为 HTML,效果完美。
但是,当我尝试将 .docx 转换为 HTML 时卡住了。
我使用以下代码将 .docx 转换为 HTML:
我从以下链接尝试的代码:如何使用 Tika 的 XWPFWordExtractorDecorator 类?
        InputStream input = TikaInputStream.get(new File("C:\\Users\\Downloads\\filename.docx"));


        Parser parser = new AutoDetectParser();


        StringWriter sw = new StringWriter();
        SAXTransformerFactory factory = (SAXTransformerFactory)
                 SAXTransformerFactory.newInstance();
        TransformerHandler handler = factory.newTransformerHandler();
        handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "html");
        handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
        handler.setResult(new StreamResult(sw));


        try {
            Metadata metadata = new Metadata();
            parser.parse(input, handler, metadata, new ParseContext());
            String xml = sw.toString();
            System.out.print("tika : "+xml); 
        } finally {
            input.close();
        }

我得到的输出结果是:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title/>
</head>
<body/>
</html>
  • 请解释我哪里做错了?
  • 有没有更好的方法将.docx转换为html字符串?

感谢您的帮助,谢谢。


@singe31,你没有理解我的意思。我已经使用hwpf转换器将.doc转换为html。但是我正在尝试对.docx进行转换,有什么方法吗? - Vignesh Paramasivam
1
https://code.google.com/p/xdocreport/wiki/XWPFConverterXHTML - singe3
在最简单的情况下,.docx 文件是一个存档文件(你可以用类似于7zip的工具打开并查看其内容),其中包含一堆XML文件。考虑到这一点,您应该使用能够将XML转换为HTML的工具。 - JonK
你也可以看看Pandoc或者其他Java命令行工具。这些任务并不是那么简单,我不确定除了POI ATM之外是否有可用的API。 - rlegendi
你可以使用docx4j来实现,参考示例:https://github.com/plutext/docx4j/blob/master/src/samples/docx4j/org/docx4j/samples/ConvertOutHtml.java - Alexander Davliatov
显示剩余2条评论
2个回答

10

这段代码对我来说很有效,可以将.docx转换为html:

您还可以查看链接:代码链接

       //convert .docx to HTML string
        InputStream in= new FileInputStream(new File(path));
        XWPFDocument document = new XWPFDocument(in);


        XHTMLOptions options = XHTMLOptions.create().URIResolver(new FileURIResolver(new File("word/media")));

        OutputStream out = new ByteArrayOutputStream();


        XHTMLConverter.getInstance().convert(document, out, options);
        String html=out.toString();
        System.out.println(html);

有人能提供一个最新的例子吗?参考资料已经失效了。谢谢。 - Andres
1
我在使用这段代码时遇到了问题,因为我无法获取XHTMLOptions、XHTMLConverter和FileURIResolver的jar包,当我进行搜索时,在这里找到了这些jar包:“org.apache.poi.xwpf.converter.core-1.0.6.jar”、“org.apache.poi.xwpf.converter.xhtml-1.0.6.jar”和“ooxml-schemas-1.1.jar”。如果您使用这些jar包,则不会出现与上述代码相关的任何错误。 - Vipul Jain
2
@Vipul,这里有一个依赖项需要使用 https://mvnrepository.com/artifact/fr.opensagres.xdocreport/org.apache.poi.xwpf.converter.xhtml/1.0.6 - DanteVoronoi
感谢大家节省了我的时间。 - Vishal Zanzrukia
1
我已经按照上面的代码将docx转换为html。但是我没有得到应用于我的docx中的边框样式!!有什么想法吗???? - Jay
我的图片无法正常显示,有什么解决方法吗? - David Christie

2
你可能想要使用Mammoth docx to HTML库。它是一个用于在浏览器端将doc,docx文档转换为html以显示和在后端处理的库。
该库支持JavaScript(浏览器和node.js),可在npm上获得;Python,可在PyPI上获得;WordPress;Java/JVM,可在Maven Central上获得;.NET,可在NuGet上获得。
链接:https://mike.zwobble.org/projects/mammoth/(演示和文章)
Github:https://github.com/mwilliamson/mammoth.js

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接