我正在使用以下代码创建新的 Word 文档:
Tidy tidy = new Tidy();
tidy.setShowWarnings(true);
tidy.setInputEncoding("UTF-8");
tidy.setOutputEncoding("UTF-8");
tidy.setXHTML(true);
tidy.setMakeClean(true);
tidy.setQuoteNbsp(false);
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
XHTMLImporterImpl XHTMLImporter = new XHTMLImporterImpl(wordMLPackage);
for (Value v : res.getRules()) {
System.out.println(v.toString());
ByteArrayOutputStream ou = new ByteArrayOutputStream();
tidy.parse(new ByteArrayInputStream(v.toString().getBytes(StandardCharsets.UTF_8)), ou);
wordMLPackage.getMainDocumentPart().getContent().clear();
wordMLPackage.getMainDocumentPart().getContent().addAll(XHTMLImporter.convert(new String(ou.toByteArray()), null));
}
wordMLPackage.save(new java.io.File(System.getProperty("user.dir") + "/report.docx"));
我想要做的是使用其他 .docx 的样式并将其附加到我保存的输出的特定部分。有任何想法吗 ?我花了很多时间寻找解决方案,但没有找到任何有用的东西。
最佳答案
第一个文档。我们想从中导入样式。
WordprocessingMLPackage wordMLPackage2 = WordprocessingMLPackage
.load(new java.io.File(System.getProperty("user.dir") + "/template.docx"));
第二个文档
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
我们从第一个文档导入样式并将其附加到第二个文档
MainDocumentPart tempDocPart = wordMLPackage2.getMainDocumentPart();
StyleDefinitionsPart sdp = tempDocPart.getStyleDefinitionsPart();
Styles tempStyle = sdp.getJaxbElement();
wordMLPackage.getMainDocumentPart().getStyleDefinitionsPart().setJaxbElement(tempStyle);
我们可以通过其 id 使用特定样式
wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Heading1", "Example");
关于java - Docx4j 从一个 .docx 导出样式并在另一个 .docx 中使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35135679/