Print window does not print whole page in chrome latest version
You are calling print()
directly after you have finished writing the <img>
tags. However, it takes time for all those images to load (asynchronously). Thus, by the time you call print()
, the images have not yet finished loading and some may not have had their height determined yet, resulting in an unexpected number of pages.
To fix this, you should call print()
only after the onload
event has fired on all of the image elements. Here is how I solved it:
var nImages = _totalPages;function imageLoaded() { if (--nImages === 0) { _printWindow.print(); }}// ...snip...// replace your `for` loop with the following:for (var i = 1; i <= _totalPages; i++) { var img = new Image; img.addEventListener('load', imageLoaded); img.src = /* get the data URL from the canvas */; // here, add in your style properties _printWindow.document.body.appendChild(img);}