Use html2canvas instead of dom-to-image

This commit is contained in:
Andreas Hocevar
2021-06-20 23:41:44 +02:00
parent e82a86f563
commit 670ea6db9d
5 changed files with 32 additions and 27 deletions

View File

@@ -68,12 +68,13 @@ const dims = {
a5: [210, 148],
};
// export options for html-to-image.
// See: https://github.com/bubkoo/html-to-image#options
// export options for html2canvase.
// See: https://html2canvas.hertzen.com/configuration
const exportOptions = {
filter: function (element) {
useCORS: true,
ignoreElements: function (element) {
const className = element.className || '';
return (
return !(
className.indexOf('ol-control') === -1 ||
className.indexOf('ol-scale') > -1 ||
(className.indexOf('ol-attribution') > -1 &&
@@ -108,21 +109,26 @@ exportButton.addEventListener(
map.once('rendercomplete', function () {
exportOptions.width = width;
exportOptions.height = height;
domtoimage
.toJpeg(map.getViewport(), exportOptions)
.then(function (dataUrl) {
const pdf = new jsPDF('landscape', undefined, format);
pdf.addImage(dataUrl, 'JPEG', 0, 0, dim[0], dim[1]);
pdf.save('map.pdf');
// Reset original map size
scaleLine.setDpi();
map.getTargetElement().style.width = '';
map.getTargetElement().style.height = '';
map.updateSize();
map.getView().setResolution(viewResolution);
exportButton.disabled = false;
document.body.style.cursor = 'auto';
});
html2canvas(map.getViewport(), exportOptions).then(function (canvas) {
const pdf = new jspdf.jsPDF('landscape', undefined, format);
pdf.addImage(
canvas.toDataURL('image/jpeg'),
'JPEG',
0,
0,
dim[0],
dim[1]
);
pdf.save('map.pdf');
// Reset original map size
scaleLine.setDpi();
map.getTargetElement().style.width = '';
map.getTargetElement().style.height = '';
map.updateSize();
map.getView().setResolution(viewResolution);
exportButton.disabled = false;
document.body.style.cursor = 'auto';
});
});
// Set print size