Cert-tools has the concept of replacing certificate variables with values in the roaster file. So you may either create a certificate template that has displayHtml hardcoded to be the same for each person, or you can add displayHtml to one of the variables that gets replaced.
For the latter option, you’d need to create your own functionality that dynamically creates the displayHtml uniquely for each person and sticks that in the roaster file. Or fork cert-tools and create the code needed to replace displayHtml elements with roster specific information, such as name.
Easiest option would be to just create the html like you would normally and insert that as your template (or whatever custom tool you use to dynamically create html).
The way I worked around this was to populate the values for Name, pubkey,address, contact first, then use those values to build the static html elements around the dynamic entries. I used php to build the csv files so I had more control.