﻿{"id":6813,"date":"2018-12-06T08:54:33","date_gmt":"2018-12-06T07:54:33","guid":{"rendered":"http:\/\/www.sigterritoires.fr\/?p=6813"},"modified":"2021-03-09T08:03:30","modified_gmt":"2021-03-09T07:03:30","slug":"imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin","status":"publish","type":"post","link":"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/","title":{"rendered":"Imprimer des cartes web avec geoserver : \u00e9vitez le plugin!"},"content":{"rendered":"\n<p>Nous verrons ici comment mettre en place une solution pour g\u00e9n\u00e9rer des pdf pour impression \u00e0 partir d&rsquo;une page de <a href=\"https:\/\/www.sigterritoires.fr\/\">cartographie<\/a> interactive, la page cod\u00e9e en OpenLayers 4 et le serveur avec <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/debuter-avec-geoserver\/\">Geoserver<\/a> 2.14.<\/p>\n\n\n\n<p>En principe, \u00e0 lire la doc de Geoserver, tout devait \u00eatre tr\u00e8s simple: installation du plugin <strong>Print <\/strong>de Geoserver, test de l&rsquo;install, configuration et c&rsquo;est tout.<\/p>\n\n\n\n<!--more-->\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter is-resized\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"7430\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/__a9-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?fit=793%2C1201&amp;ssl=1\" data-orig-size=\"793,1201\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"__a9\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?fit=640%2C969&amp;ssl=1\" src=\"https:\/\/i1.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?fit=525%2C795&amp;ssl=1\" alt=\"\" class=\"wp-image-7430\" width=\"263\" height=\"398\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?w=793&amp;ssl=1 793w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?resize=198%2C300&amp;ssl=1 198w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?resize=768%2C1163&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a9.png?resize=676%2C1024&amp;ssl=1 676w\" sizes=\"auto, (max-width: 263px) 100vw, 263px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Si l&rsquo;installation est simple et rapide, les probl\u00e8mes commencent quand on veut utiliser la page de test propos\u00e9e pour v\u00e9rifier que tout marche. Impossible de la faire marcher et \u00e0 chaque fois o\u00f9 l&rsquo;on trouve l&rsquo;origine du probl\u00e8me et qu&rsquo;on le r\u00e9sout, c&rsquo;est pour avoir un nouveau message d&rsquo;erreur et un autre probl\u00e8me \u00e0 essayer de r\u00e9soudre.<\/p>\n\n\n\n<p>Les chemins des scripts ne sont plus valables, le contenu des biblioth\u00e8ques ont chang\u00e9, bref, si vous voulez perdre votre temps, vous pouvez toujours essayer.<\/p>\n\n\n\n<p>Vous pouvez aussi chercher les solutions sur le net et comme moi, trouver des posts dans des forums avec les m\u00eames questions pos\u00e9es&#8230; et sans aucune r\u00e9ponse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reprenons depuis le d\u00e9but&#8230;<\/h2>\n\n\n\n<p>Le module d&rsquo;impression doit g\u00e9n\u00e9rer un fichier pdf contenant une carte et des informations. Cette carte est produite par Geoserver et la demande est g\u00e9n\u00e9r\u00e9e par une page html \u00e9crite avec OpenLayers. M\u00eame si l&rsquo;on peut tout faire sans autre biblioth\u00e8que, on fait souvent appel \u00e0 la biblioth\u00e8que GeoExt qui simplifie le travail de codage de l&rsquo;application.<\/p>\n\n\n\n<p>Pour ce qui est de la g\u00e9n\u00e9ration du pdf, elle s&rsquo;appuie sur la biblioth\u00e8que java Mapfish Print.<\/p>\n\n\n\n<p>Si c\u00f4t\u00e9 Geoserver la version utilis\u00e9e n&rsquo;influe pas dans le r\u00e9sultat, il n&rsquo;en est pas de m\u00eame pour les autres composants.<\/p>\n\n\n\n<p>L&rsquo;installation d\u00e9crite dans la documentation Geoserver fait r\u00e9f\u00e9rence \u00e0 la version 2 de Mapfish. Celle-ci a \u00e9t\u00e9 remplac\u00e9e par MapFish3 en 2015. Il faut comprendre surtout que les deux versions sont compl\u00e8tement diff\u00e9rentes tant au niveau des syntaxes qu&rsquo;au niveau du workflow de travail.<\/p>\n\n\n\n<p>MapFish V2 est utilis\u00e9e avec la biblioth\u00e8que GeoExt V2 qui s&rsquo;appuie sur OpenLayers 2. C&rsquo;est \u00e0 dire des vieilles versions.<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<figure class=\"wp-block-pullquote\"><blockquote><p>Si vous travaillez avec OpenLayers 4 ou 5, la version de GeoExt \u00e0 utiliser est la version 3, et la version de Mapfish \u00e0 utiliser est la version 3.<\/p><\/blockquote><\/figure>\n\n\n\n<p><br><\/p>\n\n\n\n<p><strong>Et donc, il ne faut surtout pas installer le plugin d&rsquo;impression de Geoserver (MapFish V2).<\/strong><\/p>\n\n\n\n<p>Ceci n&rsquo;est pas un probl\u00e8me, MapFish3 s&rsquo;installe facilement. Le ou les probl\u00e8mes viennent quand vous cherchez de la documentation, des exemples, des infos sur des messages d&rsquo;erreur, sur le net. Vous aurez p\u00eale-m\u00eale des r\u00e9f\u00e9rences \u00e0 toutes les versions mais sans savoir \u00e0 quelle version elle se r\u00e9f\u00e8rent&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation de Mapfish 3<\/h2>\n\n\n\n<p>Le fichier WAR de Mapfish Print est une archive Java qui peut \u00eatre ex\u00e9cut\u00e9e sur tout serveur d&rsquo;applications Web Java tel que Tomcat ou Jetty. Pour utiliser Mapfish Print en tant qu&rsquo;application Web autonome, vous devez:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Installer Java 7 ou une version ult\u00e9rieure<\/li><li>T\u00e9l\u00e9charger le serveur d&rsquo;applications Web: fichier war \u00e0 partir de l&rsquo;adresse <a href=\"http:\/\/mapfish.github.io\/mapfish-print-doc\/download.html\">http:\/\/mapfish.github.io\/mapfish-print-doc\/download.html<\/a><br><\/li><li>Placer le fichier WAR print Mapfish dans le r\u00e9pertoire webapps du serveur d&rsquo;applications Web.<\/li><li>Renommer le fichier WAR de Mapfish Print en un nom plus pratique, tel que print.war (le nom fera partie de l&rsquo;URL).<\/li><li>D\u00e9marrer le serveur d&rsquo;applications Web (Tomcat ou Jetty)<br><\/li><li>V\u00e9rifiez que l&rsquo;application est ex\u00e9cut\u00e9e correctement en visitant http: \/\/ localhost: 8080 \/ print \/ index.html. (Cela suppose que le serveur s&rsquo;ex\u00e9cute sur le port 8080 de l&rsquo;h\u00f4te local et que vous ayez renomm\u00e9 war. Print.war)<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" width=\"1117\" height=\"911\" data-attachment-id=\"7431\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/__a1-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?fit=1117%2C911&amp;ssl=1\" data-orig-size=\"1117,911\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"__a1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?fit=640%2C522&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?fit=525%2C428&amp;ssl=1\" alt=\"\" class=\"wp-image-7431\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?w=1117&amp;ssl=1 1117w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?resize=300%2C245&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?resize=768%2C626&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-2.png?resize=1024%2C835&amp;ssl=1 1024w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Pour l&rsquo;instant, ne faites rien avec cette page. Le fait qu&rsquo;elle s&rsquo;affiche suffit pour confirmer que l&rsquo;installation de MapFish s&rsquo;est pass\u00e9e correctement.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fonctionnement de Mapfish 3<\/h2>\n\n\n\n<p>Le peu de documentation en ligne est difficile \u00e0 appr\u00e9hender, car il n&rsquo;y a pas d&rsquo;introduction claire sur l&rsquo;architecture g\u00e9n\u00e9rale<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"389\" data-attachment-id=\"7474\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a1-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?fit=550%2C389&amp;ssl=1\" data-orig-size=\"550,389\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?fit=550%2C389&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?resize=550%2C389&#038;ssl=1\" alt=\"\" class=\"wp-image-7474\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?w=550&amp;ssl=1 550w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a1-6.png?resize=300%2C212&amp;ssl=1 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><\/figure>\n\n\n\n<p>Pour que l&rsquo;utilisateur obtienne un document de ce type en cliquant sur un bouton \u00ab\u00a0Imprimer\u00a0\u00bb situ\u00e9 sur une page avec une carte interactive (page html avec du code OpenLayers) il y a trois \u00e9l\u00e9ments \u00e0 travailler:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Un mod\u00e8le de formulaire cr\u00e9\u00e9 avec Jasper Studio<\/li><li>un fichier config.yaml configur\u00e9 sur le serveur d&rsquo;impression<\/li><li>un \u00e9l\u00e9ment \u00ab\u00a0specs\u00a0\u00bb \u00e0 ajouter \u00e0 l&rsquo;ordre POST ou GET de la page html<\/li><\/ul>\n\n\n\n<p>Voyons \u00e7a un peu plus en d\u00e9tail.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Mod\u00e8le de formulaire<\/h2>\n\n\n\n<p>Pour cr\u00e9er le formulaire on utilise <strong><em>Jaspersoft Studio<\/em><\/strong>. Vous pouvez le t\u00e9l\u00e9charger \u00e0 <a href=\"https:\/\/sourceforge.net\/projects\/jasperstudio\/\">partir de cette page<\/a>.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?ssl=1\"><img loading=\"lazy\" decoding=\"async\" width=\"1410\" height=\"811\" data-attachment-id=\"7475\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a2-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?fit=1410%2C811&amp;ssl=1\" data-orig-size=\"1410,811\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?fit=640%2C368&amp;ssl=1\" src=\"https:\/\/i1.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?fit=525%2C302&amp;ssl=1\" alt=\"\" class=\"wp-image-7475\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?w=1410&amp;ssl=1 1410w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?resize=300%2C173&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?resize=768%2C442&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?resize=1024%2C589&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a2-3.png?w=1280&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<p><strong><em>Jasper Studio<\/em><\/strong> permet de cr\u00e9er un mod\u00e8le de formulaire o\u00f9 vous pourrez placer les blocs de textes, d\u2019images, de cartes et de l\u00e9gende mais \u00e9galement d\u2019autres blocs comme les&nbsp;graphiques<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"550\" height=\"258\" data-attachment-id=\"7476\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a3-5\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?fit=550%2C258&amp;ssl=1\" data-orig-size=\"550,258\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?fit=550%2C258&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?resize=550%2C258&#038;ssl=1\" alt=\"\" class=\"wp-image-7476\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?w=550&amp;ssl=1 550w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a3-1.png?resize=300%2C141&amp;ssl=1 300w\" sizes=\"auto, (max-width: 550px) 100vw, 550px\" \/><\/a><\/figure>\n\n\n\n<p>Le but de ce travail est de cr\u00e9er un fichier .jrxml avec le mod\u00e8le de page \u00e0 cr\u00e9er. Le contenu m\u00eame de la page va \u00eatre d\u00e9fini ailleurs: les couches \u00e0 repr\u00e9senter, l&rsquo;\u00e9chelle, la <a href=\"https:\/\/www.sigterritoires.fr\/index.php\/projection-qgis-crs\/\">projection<\/a>,&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fichier de configuration .yaml<br><\/h2>\n\n\n\n<p>Par rapport \u00e0 la version 2 de Mapfish Print, il y a toujours un fichier de configuration au format yaml mais celui-ci est maintenant beaucoup plus simple et se focalise sur la d\u00e9finition des mod\u00e8les:&nbsp; les&nbsp;fichiers Jasper \u00e0 utiliser (le .jrxml pr\u00e9c\u00e9dent), et les&nbsp;param\u00e8tres \u00e0 envoyer au moteur Jasper pour remplir les blocs du mod\u00e8le.<\/p>\n\n\n\n<p>Voici un exemple de fichier de configuration tr\u00e8s simple:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"437\" height=\"307\" data-attachment-id=\"7477\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a5-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?fit=437%2C307&amp;ssl=1\" data-orig-size=\"437,307\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?fit=437%2C307&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?resize=437%2C307&#038;ssl=1\" alt=\"\" class=\"wp-image-7477\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?w=437&amp;ssl=1 437w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a5-1.png?resize=300%2C211&amp;ssl=1 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><\/figure>\n\n\n\n<p>Ce qu&rsquo;il faut comprendre dans ce fichier:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>la ligne <strong>A4 portrait: !template <\/strong>d\u00e9fini le nom du mod\u00e8le. Quand on voudra utiliser cette configuration on le fera en se r\u00e9f\u00e9rant au layout <strong><em>A4 portrait<\/em><\/strong><\/li><li>le <strong>reportTemplate<\/strong> permet d&rsquo;indiquer le nom de notre fichier .jrxml cr\u00e9\u00e9 avec Jaspersoft Studio. <\/li><li>les <strong>attributes <em>title <\/em><\/strong>et <strong><em>map <\/em><\/strong>contiennent les informations \u00e0 transmettre au moteur Jasper. Ceci veut dire que nous avons cr\u00e9\u00e9 dans le mod\u00e8le de formulaire un bloc <strong><em>title <\/em><\/strong>et un bloc <strong><em>map<\/em><\/strong>. Ici on renseigne le contenu de ces deux blocs.<br><\/li><\/ul>\n\n\n\n<p>Bien s\u00fbr, il y a d&rsquo;autres options disponibles pour les fichiers de configuration. Mais pour l&rsquo;instant restons simples.<\/p>\n\n\n\n<p>Nous avons un mod\u00e8le de formulaire .jrxml et un fichier de configuration .yaml. Il ne nous reste qu&rsquo;a envoyer la demande de cr\u00e9ation du pdf.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Demande d&rsquo;impression<\/h2>\n\n\n\n<p>A partir de la page html nous allons faire un POST vers le serveur avec un param\u00e8tre <strong>spec <\/strong>qui va contenir, au format json, les param\u00e8tres de notre demande d&rsquo;impression.<\/p>\n\n\n\n<p>Voici un exemple de <strong>spec <\/strong>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"layout\": \"A4 portrait\",\n    \"attributes\": {\"map\": {\n        \"center\": [\n            5,\n            45\n        ],\n        \"rotation\": 0,\n        \"longitudeFirst\": true,\n        \"layers\": [{\n            \"geoJson\": \"file:\/\/countries.geojson\",\n            \"style\": {\n                \"*\": {\"symbolizers\": [{\n                    \"fillColor\": \"#5E7F99\",\n                    \"strokeWidth\": 1,\n                    \"fillOpacity\": 1,\n                    \"type\": \"polygon\",\n                    \"strokeColor\": \"#CC1D18\",\n                    \"strokeOpacity\": 1\n                }]},\n                \"version\": \"2\"\n            },\n            \"type\": \"geojson\"\n        }],\n        \"scale\": 100000000,\n        \"projection\": \"<a href=\"https:\/\/www.sigterritoires.fr\/index.php\/epsg-4326-vs-3857\/\">EPSG:4326<\/a>\",\n        \"dpi\": 72\n    }}\n}<\/code><\/pre>\n\n\n\n<p>La ligne <strong>\u00ab\u00a0layout\u00a0\u00bb: \u00ab\u00a0A4 portrait\u00a0\u00bb <\/strong>sert \u00e0 indiquer le lien avec le fichier config.yaml avec sa ligne <strong>A4 portrait: !template<\/strong><\/p>\n\n\n\n<p>Dans la liste des attributs envoy\u00e9s, sur cet exemple simple, nous avons seulement la carte \u00e0 afficher (\u00ab\u00a0<strong>map<\/strong>\u00ab\u00a0) avec ses param\u00e8tres de mise en forme (centrage, rotation,\u00e9chelle,projection, d\u00e9finition) et, surtout, la d\u00e9finition des couches \u00e0 cartographier avec la d\u00e9finition de leur sources des donn\u00e9es (ici un fichier geoJson local).<\/p>\n\n\n\n<p>En r\u00e9ponse \u00e0 ce post la page re\u00e7oit l&rsquo;url de t\u00e9l\u00e9chargement du document pdf produit.<br><\/p>\n\n\n\n<p>Pour v\u00e9rifier ceci, vous pouvez maintenant copier-coller le code json correspondant aux spec, dans la fen\u00eatre de Test Print:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"623\" data-attachment-id=\"7478\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a6-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?fit=935%2C910&amp;ssl=1\" data-orig-size=\"935,910\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?fit=640%2C623&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?resize=640%2C623&#038;ssl=1\" alt=\"\" class=\"wp-image-7478\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?w=935&amp;ssl=1 935w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?resize=300%2C292&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a6-1.png?resize=768%2C747&amp;ssl=1 768w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<p>Cliquez sur<strong> Create and Get Print<\/strong> ou <strong>Post and Poll Print<\/strong> , vous aurez en retour votre fichier pdf:<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?ssl=1\"><img loading=\"lazy\" decoding=\"async\" width=\"2225\" height=\"1405\" data-attachment-id=\"7479\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a7-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?fit=2225%2C1405&amp;ssl=1\" data-orig-size=\"2225,1405\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?fit=640%2C404&amp;ssl=1\" src=\"https:\/\/i1.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?fit=525%2C332&amp;ssl=1\" alt=\"\" class=\"wp-image-7479\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?w=2225&amp;ssl=1 2225w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?resize=300%2C189&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?resize=768%2C485&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?resize=1024%2C647&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?w=1280&amp;ssl=1 1280w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a7-1.jpg?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/figure>\n\n\n\n<p>Le m\u00eame fichier de configuration yaml et le m\u00eame mod\u00e8le jrxml peuvent \u00eatre appel\u00e9s avec des donn\u00e9es diff\u00e9rentes. Voici une autre version du code json spec qui demande les donn\u00e9es des pays servies en WMS par Geoserver:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n  \"layout\": \"A4 portrait\",\n  \"outputFormat\": \"pdf\",\n  \"attributes\": {\n    \"map\": {\n      \"projection\": \"EPSG:3857\",\n      \"dpi\": 72,\n      \"rotation\": 0,\n      \"center\": [-8233518.5005945, 4980320.4059228],\n      \"scale\": 130000000,\n      \"layers\": [\n        {\n          \"baseURL\": \"http:\/\/carto-dei-brest.fr\/geoserver\/postgres\/wms\",\n          \"opacity\": 1,\n          \"type\": \"WMS\",\n          \"layers\": [\"postgres:pays\"],\n          \"imageFormat\": \"image\/png\",\n          \"styles\": [\"polygon\"],\n          \"customParams\": {\n            \"TRANSPARENT\": \"true\"\n          }\n        }\n               ]\n    }\n  }\n}<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<p>Dans la page de test print nous rempla\u00e7ons le texte json et le r\u00e9sultat obtenu est le suivant:<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"2045\" height=\"1405\" data-attachment-id=\"7481\" data-permalink=\"https:\/\/www.sigterritoires.fr\/index.php\/imprimer-des-cartes-web-avec-geoserver-evitez-le-plugin\/a8-4\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?fit=2045%2C1405&amp;ssl=1\" data-orig-size=\"2045,1405\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"a8\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?fit=640%2C440&amp;ssl=1\" src=\"https:\/\/i1.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?fit=525%2C361&amp;ssl=1\" alt=\"\" class=\"wp-image-7481\" srcset=\"https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?w=2045&amp;ssl=1 2045w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?resize=300%2C206&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?resize=768%2C528&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?resize=1024%2C704&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?w=1280&amp;ssl=1 1280w, https:\/\/i0.wp.com\/www.sigterritoires.fr\/wp-content\/uploads\/2018\/12\/a8-1.jpg?w=1920&amp;ssl=1 1920w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/figure>\n\n\n\n<p><br><\/p>\n\n\n\n<p>Pour aller plus loin, vous avez une pr\u00e9sentation de CampToCamp et la <a href=\"http:\/\/mapfish.github.io\/mapfish-print-doc\/index.html\">documentation de Mapfish<\/a>, <br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Et si vous utilisez le plugin print de Geoserver&#8230;<br><\/h2>\n\n\n\n<p>Si vous d\u00e9cidez quand m\u00eame d&rsquo;utiliser le plugin mis \u00e0 disposition par Geoserver, il faut savoir que:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>il n&rsquo;y a pas de possibilit\u00e9 d&rsquo;utiliser Jaspersoft pour cr\u00e9er un mod\u00e8le. Tout ce que vous faites avec Jaspersoft et MapFish 3 vous devrez le faire \u00e0 la main dans le fichier config.yaml. Et vous n&rsquo;aurez pas les m\u00eames possibilit\u00e9s comme, par exemple, inclure des graphiques dans votre sortie pdf.<\/li><li>la syntaxe du fichier yaml est totalement diff\u00e9rente. Vous trouverez sa description <a href=\"https:\/\/docs.geoserver.org\/latest\/en\/user\/extensions\/printing\/configuration.html\">sur cette page<\/a>.<\/li><li>Si vous voulez utiliser les exemples de la biblioth\u00e8que GeoExt comme base de vos d\u00e9veloppements, il faudra installer et utiliser la version GeoExt2. GeoExt 3 n&rsquo;est pas compatible avec le module Print de Geoserver. <br><\/li><\/ul>\n\n\n\n<p><br><\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous verrons ici comment mettre en place une solution pour g\u00e9n\u00e9rer des pdf pour impression \u00e0 partir d&rsquo;une page de cartographie interactive, la page cod\u00e9e en OpenLayers 4 et le serveur avec Geoserver 2.14. En principe,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"give_campaign_id":0,"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"sfsi_plus_gutenberg_text_before_share":"","sfsi_plus_gutenberg_show_text_before_share":"","sfsi_plus_gutenberg_icon_type":"","sfsi_plus_gutenberg_icon_alignemt":"","sfsi_plus_gutenburg_max_per_row":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[314,152],"tags":[1561,1556,315,1557,1560,413,279,1558,1559],"class_list":["post-6813","post","type-post","status-publish","format-standard","hentry","category-geoserver","category-outils_divers","tag-config","tag-geoext","tag-geoserver","tag-jaspersoft","tag-jrxml","tag-openlayers","tag-plugin","tag-print","tag-yaml"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p6XU0A-1LT","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/6813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/comments?post=6813"}],"version-history":[{"count":0,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/posts\/6813\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/media?parent=6813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/categories?post=6813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sigterritoires.fr\/index.php\/wp-json\/wp\/v2\/tags?post=6813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}