embed images as base64 instead of outputing to folder

768 Views Asked by At

When converting from docx to html you may specify the output path for any images

org.docx4j.Docx4J.toHTML(wordMLPackage, imageDirPath, imageTargetUri, fos2);

and the resulting html document references images via files:

<img height="22" id="rId7" src="..cc6bcedf-2770-45ad-8e81-610bbd8746ceimage1.png" width="42">

Instead I would like the converter to embed the files as base64. Is this possible?

2

There are 2 best solutions below

1
On BEST ANSWER

You do not need a custom ConversionImageHandler to achieve this. You can simply set imageDirPath to an empty string and the images will be embedded

org.docx4j.Docx4J.toHTML(wordMLPackage, "", "", fos2);

This occurs because org.docx4j.model.images.AbstractConversionImageHandler (from which HTMLConversionImageHandler derives) already handles this case for you .

1
On

You can write your own ConversionImageHandler implementation to do that.

The default implementation HTMLConversionImageHandler writes images to files.

To use your image handler, specify it via htmlSettings.setImageHandler