I'm trying to insert a png file into a docx file using the Java POI library.
The code looks like this
try {
InputStream in = this.getClass().getClassLoader().getResourceAsStream("reports" + File.separator + "test.docx");
InputStream imageIs = this.getClass().getClassLoader().getResourceAsStream("reports" + File.separator + "logo.png");
byte[] image = IOUtils.toByteArray(imageIs);
IImageProvider imageProvider = new ByteArrayImageProvider(image);
IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, TemplateEngineKind.Velocity);
FieldsMetadata metadata = report.createFieldsMetadata();
metadata.addFieldAsImage("image");
IContext context = report.createContext();
context.put("created", ZonedDateTime.now().format(DateTimeFormatter.ofPattern("yyyy년 MM월 dd일")));
context.put("image", imageProvider);
String tmpDir = System.getProperty("java.io.tmpdir");
try (OutputStream out = new FileOutputStream(new File(tmpDir + File.separator + "test-out.docx"))) {
report.process(context, out);
}
} catch (IOException | XDocReportException e) {
e.printStackTrace();
}
I'm not sure what the problem is. I keep getting the image toString instead of inserting it.
Image Input
But
Output
fr.opensagres.xdocreport.document.images.ByteArrayImageProvider@1af2d44a