Print: add QR-code to output

This commit is contained in:
Pieter Vander Vennet 2023-11-15 03:42:37 +01:00
parent 24b9f045c8
commit c21e88415d
16 changed files with 544 additions and 185 deletions

View file

@ -186,10 +186,7 @@
"includeMetaData": "Incloure metadades (darrer editor, valors calculats, ...)",
"licenseInfo": "<h3>Avís de drets de còpia</h3>Les dades proveïdes estan sota ODbL. Es poden reutilitzar de forma gratuïta, però <ul><li>l'atribució a <b>© Contribuïdors d'OpenStreetMap</b> s'ha de mostrar</li><li> Qualsevol canvi s'ha de publicar sota la mateixa llicència</li></ul> Llegeix sencer <ahref=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">l'avís de drets de còpia</a> per més detalls.",
"noDataLoaded": "No s'han carregat dades. La baixada estarà disponible aviat",
"pdf": {
"current_view_a3": "Exporta un PDF (A3, vertical) de la vista actual",
"current_view_a4": "Exporta un PDF (A4, horitzontal) de la vista actual"
},
"pdf": {},
"title": "Descarrega",
"uploadGpx": "Pujar la teva traça a OpenStreetMap"
},

View file

@ -186,10 +186,7 @@
"includeMetaData": "Zahrnout metadata (poslední editor, vypočtené hodnoty, ...)",
"licenseInfo": "<h3>Upozornění na autorská práva</h3>Poskytovaná data jsou dostupná pod ODbL. Opětovné použití je zdarma pro jakýkoli účel, ale <ul><li>musí být uveden zdroj <b>© přispěvatelé OpenStreetMap</b><li><li>Jakákoli změna musí být publikována pod stejnou licencí</li>< /ul> Podrobnosti naleznete v úplném <a href='https://www.openstreetmap.org/copyright' target='_blank'>upozornění na autorská práva</a>.",
"noDataLoaded": "Zatím nejsou načtena žádná data. Brzy bude k dispozici ke stažení",
"pdf": {
"current_view_a3": "Export aktuálního zobrazení do formátu PDF (A3, na výšku)",
"current_view_a4": "Export aktuálního zobrazení do formátu PDF (A4, na šířku)"
},
"pdf": {},
"title": "Stáhnout",
"uploadGpx": "Nahrajte svou trasu do OpenStreetMap"
},

View file

@ -188,10 +188,7 @@
"includeMetaData": "Metadaten übernehmen (letzter Bearbeiter, berechnete Werte, ...)",
"licenseInfo": "<h3>Copyright-Hinweis</h3>Die bereitgestellten Daten sind unter ODbL verfügbar. Die Wiederverwendung ist für jeden Zweck frei, aber <ul><li>die Namensnennung <b>© OpenStreetMap contributors</b> ist darzustellen</li><li>Jede Änderung muss unter der gleichen Lizenz veröffentlicht werden</li></ul> Bitte lesen Sie den vollständigen <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">Copyright-Hinweis</a> für weitere Details.",
"noDataLoaded": "Noch keine Daten geladen. Download in Kürze verfügbar",
"pdf": {
"current_view_a3": "PDF (A3, Hochformat) der aktuellen Ansicht exportieren",
"current_view_a4": "PDF (A4, Querformat) der aktuellen Ansicht exportieren"
},
"pdf": {},
"title": "Download",
"uploadGpx": "Einen Track auf OpenStreetMap hochladen"
},

View file

@ -189,8 +189,7 @@
"licenseInfo": "<h3>Copyright notice</h3>The provided data is available under ODbL. Reusing it is gratis for any purpose, but <ul><li>the attribution <b>© OpenStreetMap contributors</b> must be shown<li><li>Any change must be published under the same license</li></ul> Please read the full <a href='https://www.openstreetmap.org/copyright' target='_blank'>copyright notice</a> for details.",
"noDataLoaded": "No data is loaded yet. Download will be available soon",
"pdf": {
"current_view_a3": "Export a PDF (A3, portrait) of the current view",
"current_view_a4": "Export a PDF (A4, landscape) of the current view"
"current_view_generic": "Export a PDF off the current view for {paper_size} in {orientation} orientation"
},
"title": "Download",
"uploadGpx": "Upload your track to OpenStreetMap"

View file

@ -186,10 +186,7 @@
"includeMetaData": "Exporteer metadata (zoals laatste aanpassing, berekende waardes, …)",
"licenseInfo": "<h3>Copyright</h3>De voorziene data is beschikbaar onder de ODbL. Het hergebruiken van deze data is gratis voor elke toepassing, maar <ul><li>de bronvermelding <b>© OpenStreetMap bijdragers</b> is vereist</li><li>Elke wijziging aan deze data moet opnieuw gepubliceerd worden onder dezelfde licentie</li></ul> Gelieve de volledige <a href=\"https://www.openstreetmap.org/copyright\" target=\"_blank\">licentie</a> te lezen voor details",
"noDataLoaded": "Er is nog geen data ingeladen. Downloaden kan zodra de data geladen is.",
"pdf": {
"current_view_a3": "Exporteer de zichtbare regio als PDF (A3, staand)",
"current_view_a4": "Exporteer de zichtbare regio als PDF (A4, liggend)"
},
"pdf": {},
"title": "Download",
"uploadGpx": "Track uploaden naar OpenStreetMap"
},

View file

@ -186,10 +186,7 @@
"includeMetaData": "Dołącz metadane (ostatni edytor, obliczone wartości, ...)",
"licenseInfo": "<h3>Informacja o prawach autorskich</h3>Podane dane są dostępne na licencji ODbL. Ponowne użycie jest darmowe, ale musi być <ul><li>podane źródło <b>© autorzy OpenStreetMap</b> <li><li>Jakakolwiek zmiana musi być opublikowana na tej samej licencji.</li></ul> Proszę przeczytać pełną <a href='https://www.openstreetmap.org/copyright' target='_blank'>informację o prawach autorskich</a> dla szczegółów.",
"noDataLoaded": "Nie załadowano jeszcze żadnych danych. Pobranie będzie wkrótce dostępne",
"pdf": {
"current_view_a3": "Eksportuj PDF (A3, pionowy) obecnego widoku",
"current_view_a4": "Eksportuj PDF (A4, poziomy) obecnego widoku"
},
"pdf": {},
"title": "Pobierz",
"uploadGpx": "Prześlij swój ślad do OpenStreetMap"
},

33
package-lock.json generated
View file

@ -1,12 +1,12 @@
{
"name": "mapcomplete",
"version": "0.34.4",
"version": "0.34.7",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "mapcomplete",
"version": "0.34.4",
"version": "0.34.7",
"license": "GPL-3.0-or-later",
"dependencies": {
"@rgossiaux/svelte-headlessui": "^1.0.2",
@ -19,6 +19,7 @@
"@turf/length": "^6.5.0",
"@turf/turf": "^6.5.0",
"@types/dompurify": "^3.0.2",
"@types/qrcode-generator": "^1.0.6",
"@types/showdown": "^2.0.0",
"chart.js": "^3.8.0",
"country-language": "^0.1.7",
@ -49,6 +50,7 @@
"papaparse": "^5.3.1",
"pic4carto": "^2.1.15",
"prompt-sync": "^4.2.0",
"qrcode-generator": "^1.4.4",
"showdown": "^2.1.0",
"svg-path-parser": "^1.1.0",
"tailwind-merge": "^1.13.1",
@ -3914,6 +3916,15 @@
"integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
"dev": true
},
"node_modules/@types/qrcode-generator": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/qrcode-generator/-/qrcode-generator-1.0.6.tgz",
"integrity": "sha512-XasuPjhHBC4hyOJ/pHaUNTj+tNxA1SyZpXaS/FOUxEVX03D1gFM8UmMKSIs+pPHLAmRZpU6j9KYxvo+lfsvhKw==",
"deprecated": "This is a stub types definition for qrcode-generator (https://github.com/kazuhikoarase/qrcode-generator). qrcode-generator provides its own type definitions, so you don't need @types/qrcode-generator installed!",
"dependencies": {
"qrcode-generator": "*"
}
},
"node_modules/@types/raf": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz",
@ -9985,6 +9996,11 @@
"node": ">=6"
}
},
"node_modules/qrcode-generator": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz",
"integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw=="
},
"node_modules/qs": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
@ -16280,6 +16296,14 @@
"integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
"dev": true
},
"@types/qrcode-generator": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/qrcode-generator/-/qrcode-generator-1.0.6.tgz",
"integrity": "sha512-XasuPjhHBC4hyOJ/pHaUNTj+tNxA1SyZpXaS/FOUxEVX03D1gFM8UmMKSIs+pPHLAmRZpU6j9KYxvo+lfsvhKw==",
"requires": {
"qrcode-generator": "*"
}
},
"@types/raf": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.0.tgz",
@ -20740,6 +20764,11 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
},
"qrcode-generator": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/qrcode-generator/-/qrcode-generator-1.4.4.tgz",
"integrity": "sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw=="
},
"qs": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",

View file

@ -105,6 +105,7 @@
"@turf/length": "^6.5.0",
"@turf/turf": "^6.5.0",
"@types/dompurify": "^3.0.2",
"@types/qrcode-generator": "^1.0.6",
"@types/showdown": "^2.0.0",
"chart.js": "^3.8.0",
"country-language": "^0.1.7",
@ -135,6 +136,7 @@
"papaparse": "^5.3.1",
"pic4carto": "^2.1.15",
"prompt-sync": "^4.2.0",
"qrcode-generator": "^1.4.4",
"showdown": "^2.1.0",
"svg-path-parser": "^1.1.0",
"tailwind-merge": "^1.13.1",

View file

@ -7,7 +7,7 @@
viewBox="0 0 297 210"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="CurrentMapWithHeaderA4.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
@ -15,6 +15,12 @@
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs33">
<rect
x="1046.1989"
y="769.93724"
width="41.96155"
height="9.4432596"
id="rect1" />
<rect
x="52.013117"
y="82.676553"
@ -63,6 +69,24 @@
width="646.31286"
height="26.696141"
id="rect10143" />
<rect
x="52.013117"
y="82.676553"
width="11.700066"
height="3.225487"
id="rect916" />
<rect
x="52.013117"
y="82.676553"
width="85.749051"
height="40.108173"
id="rect1042" />
<rect
x="52.013117"
y="82.676553"
width="8.2386692"
height="2.5334366"
id="rect3260" />
</defs>
<sodipodi:namedview
id="namedview7"
@ -76,16 +100,18 @@
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="1.5544701"
inkscape:cx="130.59113"
inkscape:cy="85.23805"
inkscape:zoom="0.79385057"
inkscape:cx="640.54876"
inkscape:cy="808.08659"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2"
inkscape:snap-global="false" />
inkscape:snap-global="false"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1" />
<g
inkscape:groupmode="layer"
id="layer2"
@ -110,79 +136,81 @@
rx="4.3605742" />
<text
xml:space="preserve"
transform="(0.26458333)"
id="text4911"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4913);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4913);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<text
xml:space="preserve"
id="text10253"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10255);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10255);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,38.20272,27.672609)"
id="text3510"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3512);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3512);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
x="0"
y="0"
id="tspan1371"><tspan
id="tspan21"><tspan
style="font-size:18.6667px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1369">
</tspan></tspan></text>
id="tspan1">&#10;</tspan></tspan></text>
<text
xml:space="preserve"
id="text19136"
style="fill:#000000;-inkscape-font-specification:'sans-serif, Normal';font-family:sans-serif;font-size:16px;text-align:center;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.37795276;stroke:#000000;white-space:pre;shape-inside:url(#rect19138);stroke-opacity:1" />
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;white-space:pre;shape-inside:url(#rect19138);display:inline;fill:#000000;stroke:#000000;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-308.35032,-23.177635)"
id="text10141"
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;white-space:pre;shape-inside:url(#rect10143);fill:#000000;fill-opacity:0.914749;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"><tspan
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;white-space:pre;shape-inside:url(#rect10143);display:inline;fill:#000000;fill-opacity:0.914749;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"><tspan
x="1182.4844"
y="871.91602"
id="tspan1375"><tspan
id="tspan23"><tspan
style="fill-opacity:1;stroke:none"
id="tspan1373">$general.pdf.versionInfo</tspan></tspan></text>
id="tspan22">$general.pdf.versionInfo</tspan></tspan></text>
<text
xml:space="preserve"
id="text9425"
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect9427);fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect9427);display:inline;fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"
transform="matrix(0.27887389,0,0,0.27887389,3.4774857,-1.6117409)"><tspan
x="146.35156"
y="109.84234"
id="tspan1379"><tspan
id="tspan25"><tspan
style="font-size:18.6667px"
id="tspan1377">$general.pdf.attr
</tspan></tspan><tspan
id="tspan24">$general.pdf.attr&#10;</tspan></tspan><tspan
x="146.35156"
y="129.44238"
id="tspan1383"><tspan
id="tspan27"><tspan
style="font-size:18.6667px"
id="tspan1381">$general.pdf.attrBackground
</tspan></tspan><tspan
id="tspan26">$general.pdf.attrBackground&#10;</tspan></tspan><tspan
x="146.35156"
y="149.04242"
id="tspan1387"><tspan
id="tspan29"><tspan
style="font-size:18.6667px"
id="tspan1385">$general.pdf.generatedWith</tspan></tspan></text>
id="tspan28">$general.pdf.generatedWith</tspan></tspan></text>
<text
xml:space="preserve"
id="text11530"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect11532);fill:#ff0000;fill-opacity:0.559173;stroke:#ff00ff;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect11532);display:inline;fill:#ff0000;fill-opacity:0.559173;stroke:#ff00ff;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
x="44.572266"
y="92.258594"
id="tspan1391"><tspan
id="tspan31"><tspan
style="fill:#000000;stroke:none"
id="tspan1389">$map(current)</tspan></tspan></text>
id="tspan30">$map(current)</tspan></tspan></text>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text13115"
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect13117);fill:#000000;fill-opacity:0.559173;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect13117);display:inline;fill:#000000;fill-opacity:0.559173;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
x="52.013672"
y="88.953906"
id="tspan1393">$img(layouticon)</tspan></text>
id="tspan32">&#10;</tspan><tspan
x="52.013672"
y="97.353908"
id="tspan33"> </tspan><tspan
x="52.013672"
y="105.75391"
id="tspan34">$img(layouticon)</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:0.55917299;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke:#ff00ff;stroke-opacity:1"
style="fill:#ffffff;fill-opacity:0.559173;stroke:#ff00ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect963"
width="29.907761"
height="29.907761"
@ -190,6 +218,24 @@
y="12.790291"
rx="0"
ry="0" />
<rect
style="fill:#ffffff;fill-opacity:0.559173;stroke:none;stroke-width:0.97063;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="qrholder"
width="29.029371"
height="29.029369"
x="262.39819"
y="177.69299"
rx="0"
ry="0" />
<text
xml:space="preserve"
id="text1"
style="font-size:5.33333px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect1);display:inline;fill:#000000;fill-opacity:0;stroke-width:0.377953;stroke-dasharray:none"><tspan
x="262.39819"
y="177.69299"
id="tspan36"><tspan
style="fill-opacity:1"
id="tspan35">$img(qr)</tspan></tspan></text>
</g>
<g
inkscape:label="Layer 1"
@ -199,7 +245,7 @@
<text
xml:space="preserve"
id="text62796"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62798);fill:#000000;fill-opacity:1;stroke:none" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62798);display:inline;fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
@ -214,7 +260,7 @@
<text
xml:space="preserve"
id="text81704"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect81706);fill:#000000;fill-opacity:1;stroke:none" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect81706);display:inline;fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
@ -234,16 +280,16 @@
<text
xml:space="preserve"
id="text20597"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect20599);fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round" />
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect20599);display:inline;fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round" />
<text
xml:space="preserve"
id="text29941"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect29943);fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:18.6667px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;white-space:pre;shape-inside:url(#rect29943);display:inline;fill:#000000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"
transform="matrix(0.27887389,0,0,0.27887389,3.2770649,-0.61374399)"><tspan
x="146.53711"
y="77.943514"
id="tspan1397"><tspan
id="tspan38"><tspan
style="font-weight:bold;font-size:34.6667px;-inkscape-font-specification:'sans-serif, Bold'"
id="tspan1395">${title}</tspan></tspan></text>
id="tspan37">${title}</tspan></tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View file

@ -2,19 +2,25 @@
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="297mm"
height="420mm"
viewBox="0 0 297 420"
width="420mm"
height="297mm"
viewBox="0 0 420 297"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="CurrentMapWithHeaderA3.svg"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="CurrentMapWithHeader_A3_Landscape.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs33">
<rect
x="989.26202"
y="1556.4272"
width="26.202676"
height="5.3831315"
id="rect1" />
<rect
x="41.54771"
y="103.43336"
@ -46,28 +52,30 @@
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.44448165"
inkscape:cx="677.19332"
inkscape:cy="1470.2519"
inkscape:zoom="5.2990029"
inkscape:cx="1456.9722"
inkscape:cy="1082.3734"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2"
inkscape:snap-global="false" />
inkscape:snap-global="false"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="bg"
style="display:inline">
<rect
style="fill:none;stroke:#000000;stroke-width:1.34072;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
style="fill:none;stroke:#000000;stroke-width:1.34249;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect27895"
width="288.96408"
height="402.18954"
x="3.7742138"
y="6.4428544"
width="410.75531"
height="283.68674"
x="3.3383784"
y="6.4437408"
ry="0" />
<rect
style="fill:#ffffff;fill-opacity:0.456196;stroke:#000000;stroke-width:0.581828;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
@ -82,12 +90,12 @@
xml:space="preserve"
transform="scale(0.26458333)"
id="text4911"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4913);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4913);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text10253"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10255);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10255);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,14.472331,73.799994)"
@ -95,49 +103,55 @@
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect56707);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
x="0"
y="0"
id="tspan1192"><tspan
id="tspan17"><tspan
style="font-size:13.3333px;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1190">$map(current)</tspan></tspan></text>
id="tspan1">$map(current)</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,45.266489,29.697692)"
id="text3510"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3512);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3512);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
x="0"
y="0"
id="tspan1196"><tspan
id="tspan19"><tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1194">$general.pdf.attr
</tspan></tspan><tspan
id="tspan18">$general.pdf.attr&#10;</tspan></tspan><tspan
x="0"
y="14.634375"
id="tspan20">&#10;</tspan><tspan
x="0"
y="16.799999"
id="tspan1200"><tspan
id="tspan22"> <tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1198">$general.pdf.attrBackground
</tspan></tspan><tspan
id="tspan21">$general.pdf.attrBackground&#10;</tspan></tspan><tspan
x="0"
y="35.692733"
id="tspan1206"><tspan
y="31.434374"
id="tspan23">&#10;</tspan><tspan
x="0"
y="33.599998"
id="tspan25"> <tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1202">$general.pdf.generatedWith</tspan><tspan
id="tspan24">$general.pdf.generatedWith</tspan>&#10;</tspan><tspan
x="0"
y="52.492732"
id="tspan27"> <tspan
style="font-size:18.6667px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan1204">
</tspan></tspan></text>
id="tspan26">&#10;</tspan></tspan></text>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text19136"
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;white-space:pre;shape-inside:url(#rect19138);fill:#000000;stroke:#000000;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;white-space:pre;shape-inside:url(#rect19138);display:inline;fill:#000000;stroke:#000000;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-308.35032,184.63585)"
transform="matrix(0.26458333,0,0,0.26458333,-310.11022,64.009997)"
id="text10141"
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;white-space:pre;shape-inside:url(#rect10143);fill:#000000;fill-opacity:0.914749;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"><tspan
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;white-space:pre;shape-inside:url(#rect10143);display:inline;fill:#000000;fill-opacity:0.914749;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"><tspan
x="1182.4844"
y="871.91602"
id="tspan1210"><tspan
id="tspan29"><tspan
style="fill-opacity:1;stroke:none"
id="tspan1208">$general.pdf.versionInfo</tspan></tspan></text>
id="tspan28">$general.pdf.versionInfo</tspan></tspan></text>
<g
id="g1402"
style="display:inline"
@ -146,10 +160,10 @@
xml:space="preserve"
transform="scale(0.26458333)"
id="text13115"
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect13117);fill:#000000;fill-opacity:0.559173;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect13117);display:inline;fill:#000000;fill-opacity:0.559173;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
x="52.013672"
y="88.953906"
id="tspan1212">$img(layouticon)</tspan></text>
id="tspan30">$img(layouticon)</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:0.559173;stroke:#ff00ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect963"
@ -160,6 +174,25 @@
rx="0"
ry="0" />
</g>
<rect
style="display:inline;fill:#ffffff;fill-opacity:0.559173;stroke:none;stroke-width:0.97063;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="qrholder"
width="29.029371"
height="29.029369"
x="381.86578"
y="264.94128"
rx="0"
ry="0" />
<text
xml:space="preserve"
id="text1"
style="font-size:5.33333px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect1);display:inline;fill:#000000;stroke-width:0.377953"
><tspan
x="381.86578"
y="264.94128"
id="tspan32"><tspan
style="font-size:1.41111px"
id="tspan31">$img(qr)</tspan></tspan></text>
</g>
<g
inkscape:label="Layer 1"
@ -170,7 +203,7 @@
xml:space="preserve"
transform="scale(0.26458333)"
id="text62796"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62798);fill:#000000;fill-opacity:1;stroke:none" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62798);display:inline;fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
@ -186,17 +219,17 @@
xml:space="preserve"
transform="scale(0.26458333)"
id="text81704"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect81706);fill:#000000;fill-opacity:1;stroke:none" />
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect81706);display:inline;fill:#000000;fill-opacity:1;stroke:none" />
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,45.026071,20.99111)"
id="text135030"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect135032);fill:#000000;fill-opacity:1;stroke:none"><tspan
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect135032);display:inline;fill:#000000;fill-opacity:1;stroke:none"><tspan
x="0"
y="0"
id="tspan1216"><tspan
id="tspan34"><tspan
style="font-weight:bold;font-size:34.6667px;-inkscape-font-specification:'sans-serif, Bold'"
id="tspan1214">${title}</tspan></tspan></text>
id="tspan33">${title}</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
@ -212,6 +245,6 @@
style="stroke-width:0.264583"
id="tspan53311"
x="105.86118"
y="129.4847" /></text>
y="116.25558" /></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
width="297mm"
height="420mm"
viewBox="0 0 297 420"
version="1.1"
id="svg5"
inkscape:version="1.3 (1:1.3+202307231459+0e150ed6c4)"
sodipodi:docname="CurrentMapWithHeaderA3.svg"
xmlns="http://www.w3.org/2000/svg"
>
<defs
id="defs33">
<rect
x="989.26204"
y="1556.4272"
width="93.552685"
height="13.792278"
id="rect1"/>
<rect
x="41.54771"
y="103.43336"
width="118.76163"
height="107.62454"
id="rect19815"/>
<rect
x="730.99915"
y="857.75903"
width="646.31287"
height="26.69614"
id="rect10143"/>
<rect
x="52.013119"
y="82.676552"
width="85.749054"
height="40.108173"
id="rect13117"/>
</defs>
<sodipodi:namedview
id="namedview7"
pagecolor="#ffe1d9"
bordercolor="#111111"
borderopacity="1"
inkscape:pageshadow="0"
inkscape:pageopacity="1"
inkscape:pagecheckerboard="1"
inkscape:document-units="mm"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="2.5852328"
inkscape:cx="993.52755"
inkscape:cy="1483.232"
inkscape:window-width="1920"
inkscape:window-height="995"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer2"
inkscape:snap-global="false"
inkscape:showpageshadow="0"
inkscape:deskcolor="#d1d1d1"/>
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="bg"
style="display:inline">
<rect
style="fill:none;stroke:#000000;stroke-width:1.34072;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect27895"
width="288.96408"
height="402.18954"
x="3.7742138"
y="6.4428544"
ry="0"/>
<rect
style="fill:#ffffff;fill-opacity:0.456196;stroke:#000000;stroke-width:0.581828;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect28206"
width="203.38158"
height="35.362419"
x="6.3702731"
y="9.6101332"
ry="3.858089"
rx="4.3605742"/>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text4911"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect4913);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"/>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text10253"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect10255);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"/>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,14.472331,73.799994)"
id="text56705"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect56707);display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
x="0"
y="0"
id="tspan3"><tspan
style="font-size:13.3333px;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan2">$map(current)</tspan></tspan></text>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,45.266489,29.697692)"
id="text3510"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:0;font-family:sans-serif;white-space:pre;shape-inside:url(#rect3512);fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1"><tspan
x="0"
y="0"
id="tspan5"><tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan4">$general.pdf.attr&#10;</tspan></tspan>
<tspan
x="0"
y="16.799999"
id="tspan7"><tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan6">$general.pdf.attrBackground&#10;</tspan></tspan>
<tspan
x="0"
y="35.692733"
id="tspan10"><tspan
style="font-size:16px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan8">$general.pdf.generatedWith</tspan>
<tspan
style="font-size:18.6667px;line-height:1.05;-inkscape-font-specification:'sans-serif, Normal'"
id="tspan9">&#10;</tspan></tspan></text>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text19136"
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;white-space:pre;shape-inside:url(#rect19138);fill:#000000;stroke:#000000;stroke-width:0.377953;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"/>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,-308.35032,184.63585)"
id="text10141"
style="font-size:16px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:end;white-space:pre;shape-inside:url(#rect10143);fill:#000000;fill-opacity:0.914749;stroke:#ff0000;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"><tspan
x="1182.4844"
y="871.91602"
id="tspan12"><tspan
style="fill-opacity:1;stroke:none"
id="tspan11">$general.pdf.versionInfo</tspan></tspan></text>
<g
id="g1402"
style="display:inline"
transform="translate(-0.22805341,-0.31130177)">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text13115"
style="font-size:8px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect13117);fill:#000000;fill-opacity:0.559173;stroke-width:3.77953;stroke-linecap:round;stroke-linejoin:round"><tspan
x="52.013672"
y="88.953906"
id="tspan13">$img(layouticon)</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:0.559173;stroke:#ff00ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect963"
width="29.907761"
height="29.907761"
x="10.527658"
y="12.790291"
rx="0"
ry="0"/>
</g>
<rect
style="display:inline;fill:#ffffff;fill-opacity:0.559173;stroke:none;stroke-width:0.97063;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="qrholder"
width="29.029371"
height="29.029369"
x="260.0535"
y="388.39099"
rx="0"
ry="0"/>
<text
xml:space="preserve"
id="text1"
style="font-size:5.33333px;line-height:1.05;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';white-space:pre;shape-inside:url(#rect1);fill:#000000;stroke-width:0.377953">
<tspan
x="261"
y="415"
id="tspan14">$img(qr)</tspan></text>
</g>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
style="display:inline">
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text62796"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect62798);fill:#000000;fill-opacity:1;stroke:none"/>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="102.80793"
y="16.415634"
id="text8611-8"><tspan
sodipodi:role="line"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:7.05556px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.264583"
x="102.80793"
y="16.415634"
id="tspan8613-8" /></text>
<text
xml:space="preserve"
transform="scale(0.26458333)"
id="text81704"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect81706);fill:#000000;fill-opacity:1;stroke:none"/>
<text
xml:space="preserve"
transform="matrix(0.26458333,0,0,0.26458333,45.026071,20.99111)"
id="text135030"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;white-space:pre;shape-inside:url(#rect135032);fill:#000000;fill-opacity:1;stroke:none"><tspan
x="0"
y="0"
id="tspan16"><tspan
style="font-weight:bold;font-size:34.6667px;-inkscape-font-specification:'sans-serif, Bold'"
id="tspan15">${title}</tspan></tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
x="105.86118"
y="116.25558"
id="text53309"><tspan
sodipodi:role="line"
id="tspan53307"
style="stroke-width:0.264583"
x="105.86118"
y="116.25558" />
<tspan
sodipodi:role="line"
style="stroke-width:0.264583"
id="tspan53311"
x="105.86118"
y="129.4847"/></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -11,14 +11,11 @@
import Locale from "../i18n/Locale"
import { UIEventSource } from "../../Logic/UIEventSource"
import DownloadHelper from "./DownloadHelper"
import Qr from "../../Utils/Qr";
export let templateName: string
export let state: ThemeViewState
const template: PdfTemplateInfo = SvgToPdf.templates[templateName]
let mainText: Translation =
typeof template.description === "string"
? new Translation(template.description)
: template.description
let t = Translations.t.general.download
const downloadHelper = new DownloadHelper(state)
@ -32,8 +29,14 @@
const creator = new SvgToPdf(title, templates, {
state,
freeComponentId: "belowmap",
createImage: (key: string, width: string, height: string) =>
downloadHelper.createImage(key, width, height),
createImage: (key: string, width: string, height: string) => {
console.log("Creating an image for key", key)
if(key === "qr"){
const toShare = window.location.href.split("#")[0]
return new Qr(toShare).toImageElement(parseFloat(width), parseFloat(height))
}
return downloadHelper.createImage(key, width, height);
},
textSubstitutions: <Record<string, string>>{
"layout.title": state.layout.title,
layoutid: state.layout.id,
@ -59,7 +62,7 @@
extension="pdf"
helperText={t.downloadAsPdfHelper}
metaIsIncluded={false}
{mainText}
mainText={t.pdf.current_view_generic.Subs({orientation: template.orientation, paper_size: template.format.toUpperCase()})}
mimetype="application/pdf"
{state}
/>

26
src/Utils/Qr.ts Normal file
View file

@ -0,0 +1,26 @@
import Qrcode from "qrcode-generator"
/**
* Creates a QR-code as Blob
*/
export default class Qr {
private _textToShow: string
constructor(textToShow: string) {
this._textToShow = textToShow
}
public toImageElement(totalSize: number): string {
console.log("Creating a QR code for", this._textToShow)
const typeNumber = 0
const errorCorrectionLevel = "L"
const qr = Qrcode(typeNumber, errorCorrectionLevel)
qr.addData(this._textToShow)
qr.make()
const moduleCount = qr.getModuleCount()
const img = document.createElement("img")
const cellSize = Math.round(totalSize / moduleCount)
console.log("Cellsize", cellSize)
return qr.createDataURL(cellSize)
}
}

View file

@ -73,6 +73,8 @@ export class PngMapCreator {
pixelRatio,
})
console.log("Creating a map with size", this._options.width, this._options.height)
const map = new UIEventSource<MlMap>(mapElem)
const mla = new MapLibreAdaptor(map)
mla.zoom.setData(newZoom)
@ -81,10 +83,10 @@ export class PngMapCreator {
mla.allowZooming.setData(false)
mla.allowMoving.setData(false)
this._state?.showNormalDataOn(map)
console.log("Creating a map with size", this._options.width, this._options.height)
setState("Waiting for the data")
this._state?.showNormalDataOn(map)
setState("Waiting for the data")
await this._state.dataIsLoading.AsPromise((loading) => !loading)
setState("Waiting for styles to be fully loaded")
while (!map?.data?.isStyleLoaded()) {

View file

@ -313,6 +313,9 @@ class SvgToPdfInternals {
console.log("Creating image with key", key, "searching rect in", x, y)
const rectangle: SVGRectElement = this.page.findSmallestRectContaining(x, y, false)
console.log("Got rect", rectangle)
if (!rectangle) {
throw new Error("No rectangle found for tspan with text:" + txt)
}
const w = SvgToPdfInternals.attrNumber(rectangle, "width")
const h = SvgToPdfInternals.attrNumber(rectangle, "height")
x = SvgToPdfInternals.attrNumber(rectangle, "x")
@ -320,16 +323,17 @@ class SvgToPdfInternals {
// Actually, dots per mm, not dots per inch ;)
const dpi = 60
const img = this.page.options.createImage(key, dpi * w + "px", dpi * h + "px")
if (typeof img === "string") {
this.doc.addImage(img, "png", x, y, w, h)
} else {
const canvas = document.createElement("canvas")
const ctx = canvas.getContext("2d")
canvas.width = w * dpi
canvas.height = h * dpi
const ctx = canvas.getContext("2d")
img.style.width = `${w * dpi}px`
img.style.height = `${h * dpi}px`
ctx.drawImage(img, 0, 0, w * dpi, h * dpi)
const base64img = canvas.toDataURL("image/png")
// Don't ask me why this magicFactor transformation is needed - but it works
@ -337,6 +341,7 @@ class SvgToPdfInternals {
this.addMatrix(this.doc.Matrix(1 / magicFactor, 0, 0, 1 / magicFactor, 0, 0))
this.doc.addImage(base64img, "png", x, y, w, h)
this.undoTransform()
}
this.usedRectangles.add(rectangle.id)
return
}
@ -557,7 +562,7 @@ export interface SvgToPdfOptions {
*/
state?: ThemeViewState
createImage(key: string, width: string, height: string): HTMLImageElement
createImage(key: string, width: string, height: string): HTMLImageElement | string
}
class SvgToPdfPage {
@ -1002,7 +1007,13 @@ export interface PdfTemplateInfo {
export class SvgToPdf {
public static readonly templates: Record<
"flyer_a4" | "poster_a3" | "poster_a2" | "current_view_a4" | "current_view_a3",
| "flyer_a4"
| "poster_a3"
| "poster_a2"
| "current_view_a4"
| "current_view_a3_portrait"
| "current_view_a3_landscape"
| "current_view_a2_landscape",
PdfTemplateInfo
> = {
flyer_a4: {
@ -1037,10 +1048,17 @@ export class SvgToPdf {
isPublic: true,
},
current_view_a3: {
current_view_a3_landscape: {
format: "a3",
orientation: "landscape",
pages: ["./assets/templates/CurrentMapWithHeader_A3_Landscape.svg"],
description: Translations.t.general.download.pdf.current_view_a3,
isPublic: true,
},
current_view_a3_portrait: {
format: "a3",
orientation: "portrait",
pages: ["./assets/templates/CurrentMapWithHeaderA3.svg"],
pages: ["./assets/templates/CurrentMapWithHeader_A3_Portrait.svg"],
description: Translations.t.general.download.pdf.current_view_a3,
isPublic: true,
},

View file

@ -3,44 +3,17 @@ import SvelteUIElement from "./UI/Base/SvelteUIElement"
import PointRenderingConfig from "./Models/ThemeConfig/PointRenderingConfig"
import { UIEventSource } from "./Logic/UIEventSource"
import Marker from "./UI/Map/Marker.svelte"
class Test {
public async test() {
await Utils.waitFor(0)
const response = await fetch("http://localhost:1235/layers/atm/atm.json", {
method: "POST",
headers: {
"Content-Type": "application/json;charset=utf-8",
},
body: JSON.stringify({}),
})
import Qrcode from "qrcode-generator"
import { FixedUiElement } from "./UI/Base/FixedUiElement"
function generateQr(message: string, attachTo: string) {
const typeNumber = 0
const errorCorrectionLevel = "L"
const qr = Qrcode(typeNumber, errorCorrectionLevel)
qr.addData(message)
qr.make()
document.getElementById(attachTo).innerHTML = qr.createImgTag()
}
}
const tags = new UIEventSource({
id: "node/13",
amenity: "public_bookcase",
})
const config = new PointRenderingConfig(
{
location: ["point"],
iconSize: "20,20",
marker: [
{
icon: "circle",
color: "orange",
},
{
icon: "./assets/layers/atm.atm.svg",
},
],
},
"test"
generateQr(
"http://127.0.0.1:1234/theme.html?layout=cyclofix&z=14&lat=51.21571770000094&lon=3.219866599996749&layer-range=true&layer-gps_location=false#theme-menu:download",
"qr"
)
new SvelteUIElement(Marker, {
config,
tags,
}).AttachTo("maindiv")
// new Test().test()