Odt Converter – JODReports – Aggiungere una immagine dinamica nel template ODT

Odt Converter – JODReports – Aggiungere una immagine dinamica nel template ODT

Per poter aggiungere una immagine dinamica nel template ODT utilizzando le librerie JODReports è necessario agire in due modi distinti.
Nella classe java è necessario scrivere un metodo che chiameremo createOdt().

Le librerie utilizzate sono:

import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import net.sf.jooreports.templates.DocumentTemplate;
import net.sf.jooreports.templates.DocumentTemplateException;
import net.sf.jooreports.templates.DocumentTemplateFactory;
import net.sf.jooreports.templates.image.FileImageSource;

ed il metodo è il seguente

private Map<String, Object> data = new HashMap<String, Object>();
private Logger log = Logger.getLogger(this.getClass().getName());

private void createOdt() {

DocumentTemplateFactory documentTemplateFactory = new DocumentTemplateFactory();
DocumentTemplate template = null;

File inputFile = new File("/path/template.odt"); //inserire il path relativo alla posizione del template .odt
try {
template = documentTemplateFactory.getTemplate(inputFile);
log.debug("input file ok -> " + inputFile);
} catch (IOException e) {
log.error(e);
}
try {
tmpFile = File.createTempFile("odt_", ".odt");


data.put("qrcode", new FileImageSource(new File("/img/src/qrcode.jpg"))); //qui è possibile generare per esempio un qrcode
template.createDocument(data, new FileOutputStream(tmpFile));


log.debug("output file temporaneo creato ("+ tmpFile.getAbsolutePath() + ")..");
} catch (FileNotFoundException e) {
log.error(e);
} catch (IOException e) {
log.error(e);
} catch (DocumentTemplateException e) {
log.error(e);
}
}

A questo punto è necessario che nel template .odt venga inserita una immagine con la seguente modalità:

– Inserire una immagine
– Doppio click sull’immagine per entrare nelle proprietà
– Selezionare il tab “Opzioni”
– Nel campo “nome” inserire: jooscript.image(qrcode)

Come è possibile vedere il nome dell’immagine riporta qrcode che è esattamente il nome della chiave dell’hashmap nel nostro codice (data.put("qrcode")).

In questo modo è possibile mostrare delle immagini generate dinamicamente dal codice java in un template definito in .odt.

Spero vi sia stata utile questa guida, semplice e spartana. E’ mia abitudine scrivere le guide senza contornarle di testo inutile perché da programmatore ho sempre la necessità di trovare in modo rapido le informazioni che mi servono senza stare a leggere righe e righe di parole inutili al mio scopo.

Se avete necessità di integrare il contenuto non esitate a lasciare un commento e se avete bisogno di qualche chiarimento contattatemi senza problemi.