diff --git a/app-starter/WguAppTemplate.vue b/app-starter/WguAppTemplate.vue
index 4d7ebeb2..52549aeb 100644
--- a/app-starter/WguAppTemplate.vue
+++ b/app-starter/WguAppTemplate.vue
@@ -95,6 +95,7 @@ import InfoClickWin from '../src/components/infoclick/InfoClickWin'
import MapLoadingStatus from '../src/components/progress/MapLoadingStatus'
import AttributeTableWin from '../src/components/attributeTable/AttributeTableWin.vue'
import MapRecorderWin from '../src/components/maprecorder/MapRecorderWin'
+import printDialog from '../src/components/printTool/printDialog.vue'
import SampleModuleWin from './components/SampleModule.vue'
export default {
@@ -116,6 +117,7 @@ export default {
'wgu-maploading-status': MapLoadingStatus,
'wgu-attributetable-win': AttributeTableWin,
'wgu-maprecorder-win': MapRecorderWin,
+ 'wgu-print-win': printDialog,
'sample-module-win': SampleModuleWin
},
data () {
diff --git a/app-starter/locales/en.json b/app-starter/locales/en.json
index 825f4857..a053dd57 100644
--- a/app-starter/locales/en.json
+++ b/app-starter/locales/en.json
@@ -71,5 +71,11 @@
"sample-module": {
"title": "Sample Module",
"text": "Hello Wegue"
+ },
+
+ "wgu-print": {
+ "scales": [
+ 1000000, 500000, 250000, 100000, 50000, 25000
+ ]
}
}
diff --git a/app-starter/static/app-conf-projected.json b/app-starter/static/app-conf-projected.json
index b5db21f3..fcb6eff5 100644
--- a/app-starter/static/app-conf-projected.json
+++ b/app-starter/static/app-conf-projected.json
@@ -202,6 +202,16 @@
},
"wgu-localeswitcher": {
"target": "toolbar"
+ },
+ "wgu-print": {
+ "target": "toolbar",
+ "icon": "mdi-printer",
+ "win": "floating",
+ "draggable": false,
+ "initPos": {
+ "left": 8,
+ "top": 74
+ }
}
}
diff --git a/app-starter/static/app-conf-sidebar.json b/app-starter/static/app-conf-sidebar.json
index 12143e36..a9e31b8c 100644
--- a/app-starter/static/app-conf-sidebar.json
+++ b/app-starter/static/app-conf-sidebar.json
@@ -288,6 +288,16 @@
},
"wgu-localeswitcher": {
"target": "toolbar"
+ },
+ "wgu-print": {
+ "target": "toolbar",
+ "icon": "mdi-printer",
+ "win": "floating",
+ "draggable": false,
+ "initPos": {
+ "left": 8,
+ "top": 74
+ }
}
}
}
diff --git a/app-starter/static/app-conf.json b/app-starter/static/app-conf.json
index d6b319b1..8b0228de 100644
--- a/app-starter/static/app-conf.json
+++ b/app-starter/static/app-conf.json
@@ -286,6 +286,16 @@
"wgu-localeswitcher": {
"target": "toolbar"
},
+ "wgu-print": {
+ "target": "toolbar",
+ "icon": "mdi-printer",
+ "win": "floating",
+ "draggable": false,
+ "initPos": {
+ "left": 8,
+ "top": 74
+ }
+ },
"sample-module": {
"target": "toolbar",
"win": "floating",
diff --git a/docs/module-configuration.md b/docs/module-configuration.md
index d78eca94..fe6ac5f3 100644
--- a/docs/module-configuration.md
+++ b/docs/module-configuration.md
@@ -137,4 +137,16 @@ Module identifier: `wgu-localeswitcher`
No additional config options besides the general ones.
-LocaleSwitcher will automatically pick up the supported languages configured by the [lang](wegue-configuration?id=lang) property and offers to switch between them at runtime.
\ No newline at end of file
+LocaleSwitcher will automatically pick up the supported languages configured by the [lang](wegue-configuration?id=lang) property and offers to switch between them at runtime.
+
+## Print
+
+The module allows to print and export the current map in PDF format.
+The paper format, orientation, dpi resolution and paper map scale have to be specified in order to perform print
+
+Module identifier: `wgu-print`
+
+| Property | Meaning | Example |
+|--------------------|:---------:|---------|
+| scales | (optional) the allowed print scales list | `"scales": [100000, 50000, 25000, 10000, 5000]` |
+| resolutions | (optional) the allowed print dpi resolution list | `"resolutions": [72, 150, 200, 300]` |
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 52de862f..52df9378 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,6 +11,8 @@
"axios": "^1.3.6",
"canvas-record": "^3.1.0",
"core-js": "^3.30.1",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.1",
"ol": "9.1.0",
"proj4": "2.9.0",
"vue": "2.7.14",
@@ -2100,7 +2102,6 @@
},
"node_modules/@babel/runtime": {
"version": "7.22.6",
- "dev": true,
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.13.11"
@@ -3060,6 +3061,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@types/raf": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+ "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+ "optional": true
+ },
"node_modules/@types/range-parser": {
"version": "1.2.4",
"dev": true,
@@ -4783,7 +4790,6 @@
},
"node_modules/atob": {
"version": "2.1.2",
- "dev": true,
"license": "(MIT OR Apache-2.0)",
"bin": {
"atob": "bin/atob.js"
@@ -4985,6 +4991,14 @@
"node": ">=0.10.0"
}
},
+ "node_modules/base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"dev": true,
@@ -5265,6 +5279,17 @@
"node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
}
},
+ "node_modules/btoa": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+ "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+ "bin": {
+ "btoa": "bin/btoa.js"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"dev": true,
@@ -5483,6 +5508,25 @@
"npm": ">=7.0.0"
}
},
+ "node_modules/canvg": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
+ "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+ "optional": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@types/raf": "^3.4.0",
+ "core-js": "^3.8.3",
+ "raf": "^3.4.1",
+ "regenerator-runtime": "^0.13.7",
+ "rgbcolor": "^1.0.1",
+ "stackblur-canvas": "^2.0.0",
+ "svg-pathdata": "^6.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",
"dev": true,
@@ -6330,6 +6374,14 @@
"postcss": "^8.0.9"
}
},
+ "node_modules/css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/css-loader": {
"version": "6.8.1",
"dev": true,
@@ -7256,6 +7308,12 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.0.tgz",
+ "integrity": "sha512-5RXhAXSCrKTqt9pSbobT9PVRX+oPpENplTZqCiK1l0ya+ZOzwo9kqsGLbYRsAhzIiLCwKEy99XKSSrqnRTLVcw==",
+ "optional": true
+ },
"node_modules/domutils": {
"version": "2.8.0",
"dev": true,
@@ -9160,6 +9218,11 @@
"pend": "~1.2.0"
}
},
+ "node_modules/fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+ },
"node_modules/figures": {
"version": "3.2.0",
"dev": true,
@@ -10430,6 +10493,18 @@
"node": ">=6"
}
},
+ "node_modules/html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "dependencies": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/htmlparser2": {
"version": "6.1.0",
"dev": true,
@@ -11968,6 +12043,23 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/jspdf": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz",
+ "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+ "dependencies": {
+ "@babel/runtime": "^7.14.0",
+ "atob": "^2.1.2",
+ "btoa": "^1.2.1",
+ "fflate": "^0.4.8"
+ },
+ "optionalDependencies": {
+ "canvg": "^3.0.6",
+ "core-js": "^3.6.0",
+ "dompurify": "^2.2.0",
+ "html2canvas": "^1.0.0-rc.5"
+ }
+ },
"node_modules/just-extend": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
@@ -14501,6 +14593,12 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "optional": true
+ },
"node_modules/picocolors": {
"version": "1.0.0",
"license": "ISC"
@@ -15578,6 +15676,15 @@
"version": "2.0.0",
"license": "ISC"
},
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "optional": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"dev": true,
@@ -15735,7 +15842,6 @@
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
- "dev": true,
"license": "MIT"
},
"node_modules/regenerator-transform": {
@@ -16002,6 +16108,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/rgbcolor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+ "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.8.15"
+ }
+ },
"node_modules/rimraf": {
"version": "3.0.2",
"dev": true,
@@ -17056,6 +17171,15 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/stackblur-canvas": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
+ "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.14"
+ }
+ },
"node_modules/stackframe": {
"version": "1.3.4",
"dev": true,
@@ -17427,6 +17551,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-pathdata": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+ "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+ "optional": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/svg-tags": {
"version": "1.0.0",
"dev": true
@@ -17681,6 +17814,14 @@
"node": ">=8"
}
},
+ "node_modules/text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/text-table": {
"version": "0.2.0",
"dev": true,
@@ -18339,6 +18480,14 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "dependencies": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
"node_modules/uuid": {
"version": "9.0.0",
"dev": true,
@@ -21149,7 +21298,6 @@
},
"@babel/runtime": {
"version": "7.22.6",
- "dev": true,
"requires": {
"regenerator-runtime": "^0.13.11"
}
@@ -21876,6 +22024,12 @@
"version": "6.9.7",
"dev": true
},
+ "@types/raf": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+ "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+ "optional": true
+ },
"@types/range-parser": {
"version": "1.2.4",
"dev": true
@@ -23084,8 +23238,7 @@
"dev": true
},
"atob": {
- "version": "2.1.2",
- "dev": true
+ "version": "2.1.2"
},
"autoprefixer": {
"version": "10.4.14",
@@ -23216,6 +23369,11 @@
}
}
},
+ "base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
+ },
"base64-js": {
"version": "1.5.1",
"dev": true
@@ -23399,6 +23557,11 @@
"update-browserslist-db": "^1.0.13"
}
},
+ "btoa": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+ "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
+ },
"buffer": {
"version": "5.7.1",
"dev": true,
@@ -23532,6 +23695,22 @@
"file-extension": "^4.0.5"
}
},
+ "canvg": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
+ "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+ "optional": true,
+ "requires": {
+ "@babel/runtime": "^7.12.5",
+ "@types/raf": "^3.4.0",
+ "core-js": "^3.8.3",
+ "raf": "^3.4.1",
+ "regenerator-runtime": "^0.13.7",
+ "rgbcolor": "^1.0.1",
+ "stackblur-canvas": "^2.0.0",
+ "svg-pathdata": "^6.0.3"
+ }
+ },
"case-sensitive-paths-webpack-plugin": {
"version": "2.4.0",
"dev": true
@@ -24103,6 +24282,14 @@
"dev": true,
"requires": {}
},
+ "css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
"css-loader": {
"version": "6.8.1",
"dev": true,
@@ -24693,6 +24880,12 @@
"domelementtype": "^2.2.0"
}
},
+ "dompurify": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.0.tgz",
+ "integrity": "sha512-5RXhAXSCrKTqt9pSbobT9PVRX+oPpENplTZqCiK1l0ya+ZOzwo9kqsGLbYRsAhzIiLCwKEy99XKSSrqnRTLVcw==",
+ "optional": true
+ },
"domutils": {
"version": "2.8.0",
"dev": true,
@@ -26004,6 +26197,11 @@
"pend": "~1.2.0"
}
},
+ "fflate": {
+ "version": "0.4.8",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz",
+ "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA=="
+ },
"figures": {
"version": "3.2.0",
"dev": true,
@@ -26822,6 +27020,15 @@
}
}
},
+ "html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "requires": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ }
+ },
"htmlparser2": {
"version": "6.1.0",
"dev": true,
@@ -27814,6 +28021,21 @@
"universalify": "^2.0.0"
}
},
+ "jspdf": {
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz",
+ "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==",
+ "requires": {
+ "@babel/runtime": "^7.14.0",
+ "atob": "^2.1.2",
+ "btoa": "^1.2.1",
+ "canvg": "^3.0.6",
+ "core-js": "^3.6.0",
+ "dompurify": "^2.2.0",
+ "fflate": "^0.4.8",
+ "html2canvas": "^1.0.0-rc.5"
+ }
+ },
"just-extend": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz",
@@ -29527,6 +29749,12 @@
"version": "1.2.0",
"dev": true
},
+ "performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "optional": true
+ },
"picocolors": {
"version": "1.0.0"
},
@@ -30123,6 +30351,15 @@
"quickselect": {
"version": "2.0.0"
},
+ "raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "optional": true,
+ "requires": {
+ "performance-now": "^2.1.0"
+ }
+ },
"randombytes": {
"version": "2.1.0",
"dev": true,
@@ -30238,8 +30475,7 @@
}
},
"regenerator-runtime": {
- "version": "0.13.11",
- "dev": true
+ "version": "0.13.11"
},
"regenerator-transform": {
"version": "0.15.1",
@@ -30415,6 +30651,12 @@
"version": "1.3.0",
"dev": true
},
+ "rgbcolor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+ "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+ "optional": true
+ },
"rimraf": {
"version": "3.0.2",
"dev": true,
@@ -31139,6 +31381,12 @@
"version": "0.1.8",
"dev": true
},
+ "stackblur-canvas": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
+ "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
+ "optional": true
+ },
"stackframe": {
"version": "1.3.4",
"dev": true
@@ -31379,6 +31627,12 @@
"version": "1.0.0",
"dev": true
},
+ "svg-pathdata": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+ "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+ "optional": true
+ },
"svg-tags": {
"version": "1.0.0",
"dev": true
@@ -31542,6 +31796,14 @@
"minimatch": "^3.0.4"
}
},
+ "text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "requires": {
+ "utrie": "^1.0.2"
+ }
+ },
"text-table": {
"version": "0.2.0",
"dev": true
@@ -31964,6 +32226,14 @@
"version": "1.0.1",
"dev": true
},
+ "utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "requires": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
"uuid": {
"version": "9.0.0",
"dev": true
diff --git a/package.json b/package.json
index 45a58722..bae6edc7 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,8 @@
"axios": "^1.3.6",
"canvas-record": "^3.1.0",
"core-js": "^3.30.1",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.1",
"ol": "9.1.0",
"proj4": "2.9.0",
"vue": "2.7.14",
diff --git a/src/components/printTool/printDialog.vue b/src/components/printTool/printDialog.vue
new file mode 100644
index 00000000..e623db27
--- /dev/null
+++ b/src/components/printTool/printDialog.vue
@@ -0,0 +1,239 @@
+
+
+
+
+
+
+
+ {{ $t('wgu-print.subtitle') }}
+
+
+
+
+
+
+
+
+
+ {{ $t('wgu-print.exportClick')}}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/locales/en.json b/src/locales/en.json
index 8adb11d3..060cb9b0 100644
--- a/src/locales/en.json
+++ b/src/locales/en.json
@@ -99,5 +99,24 @@
"wgu-themeswitcher": {
"title": "Dark mode"
+ },
+
+ "wgu-print": {
+ "title": "Print map",
+ "subtitle": "Print and export pdf of the current map with the given parameters",
+ "dim": "Paper size",
+ "scales": [
+ 1000000, 500000, 250000, 100000, 50000, 25000, 10000, 5000 , 2000, 1000, 500, 200
+ ],
+ "resolutions": [
+ 72, 150, 300
+ ],
+ "orientation": "Orientation",
+ "portrait": "Portrait",
+ "landscape": "Landscape",
+ "resolution": "Resolution",
+ "scale": "Scale",
+ "exportClick": "Export pdf"
}
+
}
diff --git a/vue.config.js b/vue.config.js
index e31590b3..852a6a64 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -72,5 +72,7 @@ module.exports = defineConfig({
// Disable dependencies transpilation as browsers currently targetted by
// .browserlistrc doesn't need it anymore. If legacy browsers need to be supported
// modules to be processed can be granularly specified here.
- transpileDependencies: false
+ transpileDependencies: [
+ 'jspdf'
+ ]
})