Make Screengrabs Great Again
I recently created a project to explore Niklas von Hertzen's javascript library Html2Canvas. https://html2canvas.hertzen.com/
It creates a 'screenshot' of a DOM element by treating it as a canvas element. You then have access to it by referencing the data url.
canvas.toDataURL();
Once you have that, it can be passed to your backend and packaged up as a file.
I used the realtime feedback properties of Vue.js for the interface. So the user can see how their message is being rendered as they type.