docx4j从一个.docx导出样式,并在另一个.docx中使用它 [英] Docx4j export style from one .docx and use it in another .docx

查看:171
本文介绍了docx4j从一个.docx导出样式,并在另一个.docx中使用它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下代码创建新的Word文档:

I am creating new Word document with the code below:

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中的样式并将其附加到我保存的输出的特定部分.有任何想法吗 ?我已经花了很多时间来寻找解决方案,但是我还没有发现任何有用的东西.

What I want to do, is to use style from other .docx and append it to specific part of output that I save. Any ideas ? I've spent a lot of time on finding solution, but I haven't found anything useful.

推荐答案

第一个文档.我们要从中导入样式.

First document. We want to import styles from it.

WordprocessingMLPackage wordMLPackage2 = WordprocessingMLPackage
.load(new java.io.File(System.getProperty("user.dir") + "/template.docx"));

第二个文档

WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();

我们从第一个文档中导入样式并将其附加到第二个文档中

We import styles from first document and append them to the second document

MainDocumentPart tempDocPart = wordMLPackage2.getMainDocumentPart();
StyleDefinitionsPart sdp = tempDocPart.getStyleDefinitionsPart();
Styles tempStyle = sdp.getJaxbElement();
wordMLPackage.getMainDocumentPart().getStyleDefinitionsPart().setJaxbElement(tempStyle);

我们可以使用其ID来使用特定样式

And we can use specific style using its id

wordMLPackage.getMainDocumentPart().addStyledParagraphOfText("Heading1", "Example");

这篇关于docx4j从一个.docx导出样式,并在另一个.docx中使用它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆