将HTML转换为DOCX

时间:2014-10-10 10:47:44

标签: java docx4j

我的问题非常具体,我希望有人完成了从HTML到DOCX的转换。

为此,我从github获取了一个示例代码,并在我的本地Eclipse安装程序中进行了尝试。

import java.io.File;
import java.io.FileNotFoundException;

import javax.xml.bind.JAXBException;

import org.docx4j.convert.in.xhtml.XHTMLImporterImpl;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.exceptions.InvalidFormatException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
import org.docx4j.openpackaging.parts.WordprocessingML.NumberingDefinitionsPart;

public class HtmlToDocConvert {

    /**
     * @param args
     * @throws FileNotFoundException
     * @throws JAXBException
     * @throws Docx4JException
     */
    public static void main(String[] args) throws FileNotFoundException,
            JAXBException, Docx4JException {
        // TODO Auto-generated method stub

        // File file = new File("C:\\TestWordToHtml\\html\\Test.html");

        String inputfilepath = "C:\\TestWordToHtml\\html\\Test.html";

        try {

            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
                    .createPackage();

            NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();
            wordMLPackage.getMainDocumentPart().addTargetPart(ndp);
            ndp.unmarshalDefaultNumbering();

            XHTMLImporterImpl xHTMLImporter = new XHTMLImporterImpl(
                    wordMLPackage);
            xHTMLImporter.setHyperlinkStyle("Hyperlink");
            wordMLPackage.getMainDocumentPart().getContent().addAll(
                    xHTMLImporter.convert(new File(inputfilepath), null));

            File output = new java.io.File(System.getProperty("user.dir")
                    + "/html_output.docx");
            wordMLPackage.save(output);
            System.out.println("done");

            System.out.println("file path where it is stored is" + " "
                    + output.getAbsolutePath());

        }

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

    }

}

上面的代码给出了如下错误

线程“main”中的异常java.lang.NoSuchMethodError:org.docx4j.org.xhtmlrenderer.docx.DocxRenderer。(Ljava / lang / String;)V     在org.docx4j.convert.in.xhtml.XHTMLImporterImpl.getRenderer(XHTMLImporterImpl.java:252)     在org.docx4j.convert.in.xhtml.XHTMLImporterImpl.convert(XHTMLImporterImpl.java:466)     在HtmlToDocConvert.main(HtmlToDocConvert.java:41)

我的项目中的罐子实现了这一点如下。

  

docx4j-3.2.1.jar
   docx4j-ImportXHTML-3.2.1.jar
   SLF4J-API-1.7.7.jar
   SLF4J-log4j12-1.7.7.jar
   xhtmlrenderer-1.0.0.jar
   log4j.jar

我已经剥离了xhtmlrendere.jar文件来查看DOCRendered类,看到里面没有init方法。我已经花了将近半天来弄清楚这个东西,我不确定这是不是正确的方法进行转换甚至可能。

如果有人这样做了,他/她可以向我发送正确的 xhtmlrenderer.jar 文件或任何其他依赖项来实现这个简单的任务。

先谢谢

此致 巴努•

3 个答案:

答案 0 :(得分:5)

这不是完整的例子,是吗?只需查看ConvertInXHTMLFile.java示例中的docx4j即可。

恕我直言,你缺少程序的基本部分。此外,已经讨论过这个主题:

Convert html to doc in java

How to convert HTML to a Microsoft Word document ?

Convert HTML to Microsoft Word Document in Java

how to convert HTML to .docx using docx4j?

答案 1 :(得分:0)

检查code here。使用的Api是docx4j-ImportXHTML。代码很容易理解。只需将您的xhtml传递给api,就像在代码中一样,它将完成所需的工作。

答案 2 :(得分:0)

我遇到了同样的问题,用版本3.0.0替换你的xhtmlrenderer-1.0.0 jar文件。 This is Maven Repository link