I'm trying to insert a png file into a docx file using the Java XDocReport library

92 views Asked by At

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

0

There are 0 answers