Site iconJava PDF Blog

PDF to HTML5 conversion – Embed an image in HTML5 with Base64 encoding

HTML5 can contain links to external images and other resources (which often makes the HTML5 page much faster to load because it is a small text file with links to the images, videos, or audio it needs). This work fine so long as you have network connectivity…

One of the big new features in HTML5 is the ability for the code to work without a network connection and to store data offline in a cache. Sometimes, however, this functionality is overkill and you can embed an image more simply by just inserting the data into the HTML5 file.

An image consists of binary data so it needs to be stored in a suitable format inside the text file. Base64 encoding (a simple algorithm which converts bytes into a block of what looks like text data) is ideal (this is what you often use in emails to add in binary content). So instead of the more usual HMTL5 format of

<img id="Im0" style="display: none;" src="img/1/Im0.png" 
alt="Im0" width="540" height="720" />

you would see

base64,iV...Big block of chars here...rDYgg=="
alt="Im0" width="540" height="720" />

If you want to have a try in our PDF5HTML5 convertor, there is a new flag to enable it in today’s release (it is commented out by default in ExtractPagesAsHTML.java example).

/**
 * embed image inside PDF as base64 encoded stream
 */HTMLoutput.setBooleanValue(HTMLDisplay.EmbedImageAsBase64Stream, true);

Of course once you start playing with images, you may want to have far more control on images and be able to control their exact size.