embed images as base64 instead of outputing to folder

716 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 answers

1
wal 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
JasonPlutext 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