使用Java和xdocreport从odt生成pdf文件

时间:2019-04-17 12:09:19

标签: java pdf itext pdf-generation xdocreport

我正在使用Java和xdocreport编辑.odt文件(模板)并将其另存为odt。一切正常,但是当我尝试将odt转换为pdf时 我收到此错误:

  

ODFConverterException:java.lang.ClassCastException:插入非法元素:12

此错误是由我的odt源文件中的文本框引起的。

从odt到odt,一切正常,可以保留我的文本框。

因此,我尝试将pom中的依赖项更改为最新版本。现在,我不再遇到这个问题了,但是它会生成一个没有文本框的pdf文件。

我真的需要带文本框的pdf文件,在互联网上,我发现ODFConvertor受到限制。

public void generate(ctModel ctmodel) throws Exception {

    final InputStream in =new FileInputStream(new File("C:\\Users\\A_PC\\Desktop\\AB\\abs-templateGenerator\\src\\main\\resources\\ODM.odt"));
    final IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);

    // 2) Create context Java model and add model
    final IContext context = report.createContext();

    context.put("ct",ctmodel);

    OutputStream out = new FileOutputStream(new File("C:\\Users\\ANDRICE_PC\\Desktop\\ANDRICE-BRAIN\\abs-templateGenerator\\src\\main\\resources\\ODM_final.odt"));
    report.process(context, out);


    //generate PDF
    InputStream inPdf= new FileInputStream(new File("cdi_final.odt"));
    OdfTextDocument document = OdfTextDocument.loadDocument(inPdf);


    PdfOptions options = PdfOptions.create().fontEncoding("");

    OutputStream outPdf = new FileOutputStream(new File("cdi_final.pdf"));
    PdfConverter.getInstance().convert(document, outPdf, options);
}

我的pom:

<dependency>
    <groupId>fr.opensagres.xdocreport</groupId>
    <artifactId>fr.opensagres.xdocreport.document.odt</artifactId>
    <version>1.0.6</version>
</dependency>

<dependency>
    <groupId>fr.opensagres.xdocreport</groupId>
    <artifactId>fr.opensagres.xdocreport.converter.odt.odfdom</artifactId>
    <version>1.0.6</version>
</dependency>

<dependency>
    <groupId>fr.opensagres.xdocreport</groupId>
    <artifactId>fr.opensagres.xdocreport.template.velocity</artifactId>
    <version>1.0.6</version>
</dependency>

有人可以提供解决方案以将我的文本框保留在pdf中吗 或使用文本框将odt转换为pdf的其他解决方案?

0 个答案:

没有答案