我想将html内容转换为docx。
我正在使用docx4j-ImportXHTML和docx4j。
String xhtml= "<div>hello world <bold>bold character</bold></div>";
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
wordMLPackage.getMainDocumentPart().getContent().addAll(
XHTMLImporter.convert( xhtml, null) );
System.out.println(XmlUtils.marshaltoString(wordMLPackage.getMainDocumentPart().getJaxbElement(), true, true));
wordMLPackage.save(new java.io.File("/home/out.docx") );
调用convert方法时出现此异常:
java.lang.RuntimeException:javax.xml.bind.JAXBException:无法创建 内部NamespacePrefixMapper -具有链接的异常:[java.lang.ClassNotFoundException:org.docx4j.jaxb.suninternal.NamespacePrefixMapper]在 org.docx4j.XmlUtils.marshaltoString(XmlUtils.java:840)在 org.docx4j.XmlUtils.marshaltoString(XmlUtils.java:716)在 org.docx4j.model.styles.StyleTree.createVirtualStylesForDocDefaults(StyleTree.java:487) 在org.docx4j.model.styles.StyleTree。(StyleTree.java:107)在 org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.getStyleTree(MainDocumentPart.java:202) 在 org.docx4j.openpackaging.parts.WordprocessingML.MainDocumentPart.getStyleTree(MainDocumentPart.java:172) 在 org.docx4j.convert.in.xhtml.XHTMLImporterImpl.stylesToCSS(XHTMLImporterImpl.java:464) 在 org.docx4j.convert.in.xhtml.XHTMLImporterImpl.getRenderer(XHTMLImporterImpl.java:271) 在 org.docx4j.convert.in.xhtml.XHTMLImporterImpl.convert(XHTMLImporterImpl.java:663)
答案 0 :(得分:0)
首先从3.0.0升级到docx4j 8.1.x:https://www.docx4java.org/downloads.html
(无需更改您的ImportXHTML版本)。
此外,您还需要确保HTML格式正确的XML。因此,请将示例放在
或标签中。