用Java编程将HTML / MXML文件转换为Word doc

时间:2011-07-22 05:35:34

标签: java html mxml docx

我想将HTML或MXML文件转换为Microsoft .doc和/或.docx格式。

请举例说明这一点?

4 个答案:

答案 0 :(得分:5)

我发现到目前为止,执行此类转换的最佳(免费)选项是使用OpenOffice API。它有一个非常强大的转换设施。由于API的抽象程度,最初开始工作有点痛苦,但一旦你这样做,它就会很强大。 This API wrapper有助于简化它。

答案 1 :(得分:1)

您还可以使用docx4j.jar,只需将xhtml转换为docx。

您可以将格式信息保存为xhtml模板,并在运行时将表单输入(如姓名,年龄,地址等)放入模板中。

这是从此link

引用的示例代码
public static void main(String[] args) throws Exception 
 {
        String xhtml= 
                "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%;\"><tbody><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr><tr><td>test</td><td>test</td></tr></tbody></table>";       

        // To docx, with content controls
        WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();

        XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);

        wordMLPackage.getMainDocumentPart().getContent().addAll( 
                XHTMLImporter.convert( xhtml, null) );

        wordMLPackage.save(new java.io.File("D://sample.docx"));
}

答案 2 :(得分:0)

您可以使用iText和Apache POI来处理和转换Java中的MS文档。

答案 3 :(得分:0)

您可以使用 Aspose.Words Cloud SDK for Java 将 HTML 转换为 DOCX。其免费定价计划每月提供 150 次免费 API 调用。

P.S:我是 Aspose 的开发人员布道者

//Get Client ID and Client Key from https://dashboard.aspose.cloud/
WordsApi wordsApi = new WordsApi("xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx","xxxxxxxxxxxxxxxxxxxxxxx","https://api.aspose.cloud");
ApiClient client = wordsApi.getApiClient();
client.setConnectTimeout(12*60*1000);
client.setReadTimeout(12*60*1000);
client.setWriteTimeout(12*60*1000);
try {
    
    ConvertDocumentRequest request = new ConvertDocumentRequest(
            Files.readAllBytes(Paths.get("C:/Temp/02_pages.html").toAbsolutePath()),
            "docx",
            null,
            null,
            null,
            null
        );

        File result = wordsApi.convertDocument(request);
        System.out.println("api request completed...");
        File dest = new File("C:/Temp/02_pages_java.docx");
        Files.copy(result.toPath(), dest.toPath(),
        java.nio.file.StandardCopyOption.REPLACE_EXISTING);

        } catch (Exception e) {
            System.out.println(e.getMessage());
        }