有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java XDocReport:XDocConverterException:无法从=ODT中找到转换器

我正在尝试将XDocReport用于InjectODT并将其转换为PDF,下面是我的java代码:

InputStream in= new FileInputStream(new File("D:\\exemple.odt"));
                IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in,TemplateEngineKind.Velocity);

IContext context = report.createContext();
context.put("bean", "myMonthReport2016");

Options options = Options.getTo(ConverterTypeTo.PDF);
OutputStream out = new FileOutputStream(new File("exemple_Out.odt"));
report.convert(context, options, out);

该版本使用1.0.6,即pom中的我的依赖项。xml:

<!-- XDocReport -->
            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.core</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.document</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.template</artifactId>
<version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.converter</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.document.odt</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>fr.opensagres.xdocreport.converter.odt.odfdom</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>
                <artifactId>org.odftoolkit.odfdom.converter</artifactId>
                <version>0.9.8</version>
            </dependency>

            <dependency>
              <groupId>org.odftoolkit</groupId>
              <artifactId>odfdom-java</artifactId>
              <version>0.8.7</version>
            </dependency>

            <dependency>
                <groupId>fr.opensagres.xdocreport</groupId>           <artifactId>fr.opensagres.xdocreport.template.velocity</artifactId>
                <version>${xdocreport.version}</version>
            </dependency>

            <!-- Velocity -->
            <dependency>
                <groupId>org.apache.velocity</groupId>
                <artifactId>velocity</artifactId>
                <scope>provided</scope>
            </dependency>

我在测试后发现这个错误:

fr.opensagres.xdocreport.converter.XDocConverterException: Cannot find converters from=ODT

我关注了这个问题,但是错误没有解决 问题:https://github.com/ricochango1/xdocreport/issues/20


共 (1) 个答案

  1. # 1 楼答案

    我也遇到了同样的问题,解决方案是如下更改xdocreport的版本:

    <dependency>
        <groupId>fr.opensagres.xdocreport</groupId>
        <artifactId>org.apache.poi.xwpf.converter.pdf</artifactId> 
        <version>1.0.6</version>
    </dependency>
    

    在另一边试试:

    URL url = new File("D:\\exemple.odt").toURI().toURL();
    InputStream documentAsStream = url.openStream();
    IXDocReport xdocReport = ocReportRegistry.getRegistry().loadReport(inputStream, templateEngine);