How to convert odt to docx with xdocreport?

I am using xdocreport 1.0.3 and I want to download the odt template, process it and finally get the processed docx document. How can i do this?

I tried this:

public void generateUserReport(long pcCaseId, long currentUserId) throws CMSException{
    try {
    InputStream is = new FileInputStream(CustomTemplate.TEMPLATES_PATH + "test.odt");
    IXDocReport report;
    report = XDocReportRegistry.getRegistry().loadReport(is,TemplateEngineKind.Velocity);
    IContext context = report.createContext();

    FieldsMetadata metadata = new FieldsMetadata();
    metadata.addFieldAsImage("signature");
    metadata.addFieldAsImage("logo");

     Date currentDate = new Date();
     SimpleDateFormat df = new SimpleDateFormat("MM/dd/YYYY");
     context.put("currentDate", df.format(currentDate));

    User user = this.userDAO.loadUser(currentUserId);
    byte[] signatureByteArr = user.getSignature();
    context.put("userName", user.getFullName());

    //TODO If exists signature, it will be added, in other case?
    if (signatureByteArr!=null){
        FileOutputStream fos = new FileOutputStream(CustomTemplate.TEMPLATES_PATH + "signature.jpg");
        report.setFieldsMetadata(metadata);
        fos.write(signatureByteArr);
        FileImageProvider signature = new FileImageProvider(new File(CustomTemplate.TEMPLATES_PATH,"signature.jpg"));
        context.put("signature", signature);
    }else{
        FileImageProvider noImage = new FileImageProvider(new File(CustomTemplate.TEMPLATES_PATH, "1px.gif"));
        context.put("signature", noImage);
    }

    FileImageProvider logo = new FileImageProvider(new File("TEMPLATES_PATH, logo.gif"));
    context.put("logo", logo);

    OutputStream out = new FileOutputStream(new File(CustomTemplate.TEMPLATES_PATH, "OutPut.docx"));
    report.process(context, out);
    System.out.println("Success");
    } catch (IOException e) {
    System.out.println("IO exception");
    } catch (XDocReportException e) {
        System.out.println("XDocException");
        e.printStackTrace();
    }
}

I get OutPut.docx, but de facto it is an odd document and Microsoft Office cannot open it without detailed error information. OpenOffice opens it without any problems.

+3
source share
1 answer

In the short answer, XDocReport does not support odt-> docx converter .

report.process, (docx template- > docx report, odt template- > odt report). ( docx), OpenOffice , MS Word .

, html, pdf, report.convert, docx- > odt, XDocReport . XDocReport , docx- > odt XDocReport.

+3

All Articles