java - Docx4j 从一个 .docx 导出样式并在另一个 .docx 中使用它

标签 java ms-word docx docx4j

我正在使用以下代码创建新的 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/

相关文章:

PHP 清理粘贴的 Microsoft 输入

java - Docx4j - 如何用值替换占位符

java - 是否可以在自定义 PreAuthorize 方法中获取 RequestMethod-verb?

java - 如何在 Hibernate 上允许重复实体?

c# - 如何抑制在 C# 中打开 word 文档时显示的 VIsual Basic "Macros are Disabled"对话框

java - 如何使用 Java 将数据插入 Microsoft Word 模板?

javascript - html-docx-js 在创建 docx 文件时不能应用外部 css 类样式

ruby-on-rails - 在 Ruby/Rails 中生成 PDF/HTML/DOCX 的最佳方法是什么

java - 对在 Java 中跳过数字的整数数组进行分组

java - 如何转换数字并将其存储在 char 数组中,然后将 char 数组转换为 String 以便打印整数?