猿问

如何将 HTML <h3> </h3> 转换为 Docx4j 中的 MS 文档 Heading3?

我一直在从 HTML 内容生成 word 文档。


使用下面的代码。


ordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(PageSizePaper.LETTER, false);


XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);

XHTMLImporter.setRunFormatting(FormattingOption.CLASS_PLUS_OTHER);

NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();


wordMLPackage.getMainDocumentPart().addTargetPart(ndp);

ndp.unmarshalDefaultNumbering();


wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert("<h3> SAMPLE HEADING</h3>", null));


File exportFile = new File(somepath/sample.docx);

wordMLPackage.save(exportFile);

上面的代码工作正常并生成文档,但 HTML<h3> SAMPLE HEADING</h3>没有转换为 MS word Heading 3,它在文档中显示为普通文本。


稍后我将使用以下代码使用这些标题生成目录TOC 。


tocGenerator.generateToc( 1,    "TOC \\o \"1-3\" \\h \\z \\u ", false);

但是有些代码不支持普通文本生成目录。


BIG阳
浏览 155回答 1
1回答

婷婷同学_

我们需要使用以下代码更改标题设置。ImportXHTMLProperties.setProperty("docx4j-ImportXHTML.Element.Heading.MapToStyle", true);这里是满足要求的更新代码。//&nbsp; activating Headings property for MS Word Heading MappingImportXHTMLProperties.setProperty("docx4j-ImportXHTML.Element.Heading.MapToStyle", true);ordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(PageSizePaper.LETTER, false);XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);XHTMLImporter.setRunFormatting(FormattingOption.CLASS_PLUS_OTHER);NumberingDefinitionsPart ndp = new NumberingDefinitionsPart();wordMLPackage.getMainDocumentPart().addTargetPart(ndp);ndp.unmarshalDefaultNumbering();wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert("<h3> SAMPLE HEADING</h3>", null));File exportFile = new File(somepath/sample.docx);// adding TOC - TABLE OF CONTENTSTocGenerator tocGenerator = new TocGenerator(wordMLPackage);tocGenerator.generateToc(0, "TOC \\o \"1-3\" \\h \\z \\u ", false);wordMLPackage.save(exportFile);
随时随地看视频慕课网APP

相关分类

Java
我要回答