Есть несколько решений, например, переключение свойства отображения или рендеринг внутри скрытого элемента.
Раствор 1
Быстро переключать свойство видимости
const el = document.querySelector('.specific');
el.style.display = "block"; // or any other property, like opacity, visibility...
html2canvas(el, {...}).then((canvas) => {
el.style.display = "none";
};
Раствор 2
Оберните свой div (и сделайте его видимым) внутри невидимой оболочки
<div style="position: absolute; opacity: 0; pointer-events:none;">
<div class="specific"></div>
</div>
или
<div style="overflow: hidden; height: 0;">
<div class="specific"></div>
</div>
Решение 3
Используя функцию обратного вызова html2canvas onclone, вы можете изменить объект, переданный для рендерера (я думаю, что это лучшее решение)
html2canvas(document.querySelector('.specific'), {
onclone: function(doc){
doc.style.display = 'block';
// or doc.style.opacity = '1', doc.style.visibility = 'visible' ...
},
onrendered: function(canvas) {
theCanvas = canvas;
Canvas2Image.saveAsPNG(canvas);
}
});