Java 将HTML转换为DOCX

Java 将HTML转换为DOCX,java,docx4j,Java,Docx4j,我的问题非常具体,我希望有人已经完成了从HTMLto到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.open

我的问题非常具体,我希望有人已经完成了从HTMLto到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.xhtmlPorterImpl.convert(xhtmlPorterImpl.java:466) 位于HtmlToDocConvert.main(HtmlToDocConvert.java:41)

我的项目中实现这一点的JAR如下

docx4j-3.2.1.jar
docx4j-ImportXHTML-3.2.1.jar
slf4j-api-1.7.7.jar
slf4j-log4j12-1.7.7.jar
XHTMLender-1.0.0.jar
log4j.jar

我剥离了xhtmlendere.jar文件来查看DOCRendered类,发现里面没有init方法。我花了将近半天的时间来解决这个问题,我不确定这是正确的转换方式还是可能的

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

提前谢谢

问候,,
巴努这不是一个完整的例子,是吗?请看一看示例

我知道你缺少程序的基本部分。此外,本主题已经讨论过:


检查。使用的Api是docx4j ImportXHTML。代码很容易理解。只需将xhtml作为代码传递给api,它就可以完成所需的工作。

我也遇到了同样的问题,请将XHTMLender-1.0.0JAR文件替换为3.0.0版。

可能的副本如果不清楚,您可以在Maven中或通过Maven找到正确的xhtmlrender-3.0.0.jar。在放置最新的xhtmlrender-3.0.0后,我能够使其正常工作。构建路径中的jar。