docx4j转换html-> docx-> html

我正在使用docx4j开发我的第一个项目…我的目标是将xhtml从webapp(ckeditor创建的html)导出到docx,在Word中编辑它,然后将其导回到ckeditor wysiwyg。

(* http://www.docx4java.org/forums/xhtml-import-f28/html-docx-html-inserts-a-lot-of-space-t1966.html#p6791?sid=78b64a02482926c4dbdbafbf50d0a914的 crosspost将在何时更新回答)

我创建了一个包含以下内容的html测试文档:

  • TEST LINE 1
  • TEST LINE 2

然后我的代码从这个html创建一个docx,如下所示: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("test.html"), null)); System.out.println(XmlUtils.marshaltoString(wordMLPackage .getMainDocumentPart().getJaxbElement(), true, true)); wordMLPackage.save(new java.io.File("test.docx")); 

我的代码然后尝试将docx BACK转换为html,如下所示:WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage .createPackage();

  NumberingDefinitionsPart ndp = new NumberingDefinitionsPart(); wordMLPackage.getMainDocumentPart().addTargetPart(ndp); ndp.unmarshalDefaultNumbering(); XHTMLImporterImpl xHTMLImporter = new XHTMLImporterImpl(wordMLPackage); xHTMLImporter.setHyperlinkStyle("Hyperlink"); WordprocessingMLPackage docx = WordprocessingMLPackage.load(new File("test.docx")); AbstractHtmlExporter exporter = new HtmlExporterNG2(); OutputStream os = new java.io.FileOutputStream("test.html"); HTMLSettings htmlSettings = new HTMLSettings(); javax.xml.transform.stream.StreamResult result = new javax.xml.transform.stream.StreamResult( os); exporter.html(docx, result, htmlSettings); 

返回的html是:

             

TEST LINE 1

TEST LINE 2

现在每条线后面都有很多额外的空间。 不知道为什么会发生这种情况,转换似乎会增加很多额外的空格/回车。

从您的问题中不清楚您是否担心(X)HTML源文档中的空格,或者在您呈现的页面中(可能是在CKEditor中)。 如果是后者,那么浏览器和CK版本可能是相关的。

空白可能重要也可能不重要 ; 尝试谷歌搜索’xhtml重要空白’了解更多信息。

作为背景,取决于docx4j属性docx4j.Convert.Out.HTML.OutputMethodXML,docx4j将使用

  

要么

   

注意@method值的不同。 如果您想要不同的东西,可以分别修改docx2html.xsl或docx2xhtml.xsl。

有没有办法将wordMLPackage转换为html而没有所有额外的东西,如:

  

和CSS?

它可能只是简单的原始html和内联css,如