Я делал что-то подобное раньше.Хотя мое решение состояло в том, чтобы просто отправить javascript реальный html-файл, отображаемый на стороне клиента.У меня был сервлет, который принимает HTML-код, затем сервлет вызывает исполняемый файл (я не могу вспомнить, что это было, но это было бесплатное программное обеспечение, но имеет водяной знак, он принимает HTML в своем аргументе командной строки), который производитизображение из HTML, который сервлет сохраняет в каталог.
Хотя требование бизнес-пользователя также включало в себя обеспечение того, чтобы код не использовался для шпионажа или отслеживания на стороне клиента ... Но в итоге они согласились с результатами программы.Как на самом деле скриншот не сделан на стороне клиента ...