gpt4 book ai didi

java - 尝试使用 docx4j 扩展控件绑定(bind)和设置自定义 xsltfinisher 时出现问题

转载 作者:行者123 更新时间:2023-12-02 01:26:37 26 4
gpt4 key购买 nike

我正在尝试使用 docx4j 生成报告。我已经成功创建了一个 Word 模板,并根据我的数据创建了 xml 绑定(bind)。

我可以使用 docx4j 基于此生成 docx 输出,但现在我需要执行一些条件样式 - 基于值将单元格着色为某种颜色。

我已经查看并尝试实现 ContentControlBindingExtensions sample .

但我不断收到错误消息,提示无法在类加载器中找到 XsltCustomFinisher。

我的代码:

private static void bindXMLToTemplateFinisher(WordprocessingMLPackage wordMLPackage, String xml) throws Docx4JException, SAXException, IOException {

XPathFactoryUtil.setxPathFactory(new net.sf.saxon.xpath.XPathFactoryImpl());

Document xmlDoc = convertStringToXMLDocument(xml);
//ClassLoader classloader = Thread.currentThread().getContextClassLoader();
//String url = classloader.getResource("XsltFinishers/XsltFinisherCustom.xslt").getPath();

Docx4jProperties.setProperty("docx4j.model.datastorage.XsltFinisher.xslt", "XsltFinisherReport.xslt");

Docx4J.bind(wordMLPackage, xmlDoc, Docx4J.FLAG_BIND_INSERT_XML | Docx4J.FLAG_BIND_BIND_XML, null, new XsltProviderImpl(), "XsltFinisherReport.xslt", null);

}

我希望能够设置一个 xsltfinisher 文件,但它似乎无法找到我正在尝试使用的文件。

如果您能帮助了解如何在 docx4j 中设置和使用自定义 xslt 整理器,我们将不胜感激。

最佳答案

从基础开始,将 XsltFinisherReport.xslt 放在您的类路径中,就像它所说的那样?在您的 IDE 中,这可能意味着将包含它的目录添加到您的类路径中。

您可以打开 org.docx4j.utils.ResourceUtils 的日志记录以进行更多诊断。

根据 XsltFinisher 中的文档:

 * As an optional step after binding, apply user-defined XSLT to transform
* this content control.
*
* A template is attached to a content control (a repeat/condition/or normal bind),
* using tag od:call=XYZ where XYZ is the template to call.
*
* For example, by placing this on a repeat, a table tow could be coloured red if
* its contents met some condition.

例如 xslt,请参阅 https://github.com/plutext/docx4j/tree/master/docx4j-samples-resources/src/main/resources

关于java - 尝试使用 docx4j 扩展控件绑定(bind)和设置自定义 xsltfinisher 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57580892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com