J'ai une carte que je souhaite imprimer une fois que l'utilisateur a ouvert certaines couches. Les couches sont géoserveur wms et la couche de base est OSM.
Je sais que geoserver a un module d'impression (qui est installé et fonctionne parce que je reçois une réponse de geoserver / pdf / info.json? Var = printCapabilities
Ce que je ne comprends pas, c'est comment je l'utilise pour imprimer la carte actuelle avec des couches visibles.
J'ai regardé l'exemple de GeoExt (mapfish) mais cela ne m'a pas aidé à comprendre.
Mise à jour 1: j'ai généré l'URL suivante par code:
http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]}
et je reçois un PDF vide (uniquement avec le titre) ... Qu'est-ce qui pourrait ne pas arriver?
openlayers-2
geoserver
printing
Alophind
la source
la source
Réponses:
Le processus d'impression du géoserveur comprend deux étapes.
D'abord côté serveur , vous devez configurer votre fichier yaml, appelé config.yaml. Parcourez la documentation détaillée sur la page de documentation du module d'impression MapFish .
Une fois cela fait, la deuxième étape est du côté client . Étant donné que vous utilisez des couches ouvertes pour votre frontal, afin d'obtenir la liste des couches visibles, vous aurez besoin d'une boucle simple avec vérification de la visibilité, par exemple
Vous devez maintenant le transmettre à votre URL d'impression. par exemple
Bien sûr, vous devrez apporter des modifications pertinentes à l'URL. Attribuez ensuite cette URL à votre bouton d'impression, puis appelez une fonction de clic de manière pragmatique.
Et.. Voila!!!
la source
Si vous êtes un utilisateur Chrome, Google Cloud Print est un moyen rapide et simple , mais il est conçu pour imprimer la page Web entière, mais vous pouvez utiliser un affichage plein écran et l'imprimer.
Un autre avantage est que vous pouvez imprimer sur une imprimante connectée partout où vous avez enregistré des imprimantes sur votre compte, de sorte que l'impression mobile est disponible sur votre ordinateur de bureau avec une imprimante connectée, ou tout ordinateur et imprimante que vous avez enregistrés sur votre compte Google. Il prend en charge les imprimantes héritées et les imprimantes réseau spécialement conçues pour fonctionner avec Google Cloud Print.
la source
Je pense que vous allez sur la bonne voie avec geoserver et le plugin mapfish. C'est ce que j'utilise pour imprimer mes sous-couches WMS et OSM. Il y a cependant une chose à noter si vous allez utiliser cette méthode. Si vous voulez que vos cartes imprimées soient scallées correctement, vous ne pourrez pas utiliser OSM directement à partir de ce site car la projection dans laquelle il se trouve n'est pas mise à l'échelle correctement. Vous devrez charger les données dans une base de données et utiliser un SRS différent.
Cela dit, je vais vous donner un bref aperçu sur la façon de faire fonctionner l'impression avec le plugin mapfish dans geoserver.
Vous devez d'abord télécharger le plugin mapfish et l'installer dans votre installation geoser. Lorsque j'ai fait cela pour la première fois, cette étape ne semblait pas être documentée nulle part dans les didacticiels ou les démos pour l'impression, il a donc fallu un certain temps avant de le comprendre. De plus, il était quelque peu difficile de trouver le plugin.
Cette page montre les instructions de Geoserver sur la façon d'installer le plugin et de l'utiliser. Fondamentalement, il se décompose en:
Ok maintenant que le plugin est installé, vous devrez configurer le plugin, ce qui se fait en modifiant le fichier config.yaml dont 'thelastray' parle dans leur réponse ci-dessus. Le fichier doit être créé au redémarrage de GeoServer et se trouve à l'emplacement suivant:
Il existe de nombreuses options pour cela, vous devrez donc parcourir la documentation sur le site Web de Mapfish ici.
L'étape suivante consiste à créer une application qui utilise ce plugin pour effectuer l'impression. Un exemple d'application utilisant cette configuration pour imprimer avec GeoEXT peut être trouvé ici . Si vous souhaitez voir d'autres exemples, regardez sur cette page.
J'espère que cela vous aidera à démarrer.
la source
Veuillez consulter http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html j'espère que cela vous aidera.
la source
"Carte en papier" peut être plus que simple "adapter l'image à la page" ... L'histoire de la Cartographie a été écrite sur papier, et aujourd'hui certains produits cartographiques demandent encore du papier.
Aujourd'hui, le papier est au format PDF - oubliez EPUB ou "impression par navigateur", ce sont des normes en attente, CSS3, etc., sont pour l'avenir ... Et les produits cartographiques (papier) de bonne qualité ont besoin de XSLT-FO ou CSS2 . Avec (X) HTML + CSS2, vous pouvez produire de bons PDF (!) ... Ce HTML n'est pas "pour navigateur", c'est pour un outil de "génération de PDF" (qui génère des PDF à la volée ou hors ligne).
Le seul "outil professionnel pour générer de bons PDF avec HTML + CSS2" que je connaisse, est PrinceXML : j'ai testé avec des "images à la volée" (SVG, JPG et PNG) à partir des protocoles WFS et WMS , et avec OpenLayers , et fonctionne si bien (!).
la source
Je viens de faire ça:
Html2canvas.js téléchargé ( https://github.com/niklasvh/html2canvas/releases )
Téléchargé html2canvas-proxy.php ( https://github.com/adjdred/html2canvas-proxy-php )
Installé à la fois sur mon serveur + ref à .js dans la balise et dans mon JS:
Me donne un .png de la carte actuelle - avec laquelle je peux faire n'importe quoi - prend moins d'une seconde sur mon PC.
Mini
la source
Il est possible d'imprimer directement sur le web avec les outils dont vous disposez mais cela nécessiterait des compétences que vous ne possédez pas.
Ma solution pour vous serait d'utiliser QGIS . En installant le plugin OpenLayers dans QGIS, vous pouvez accéder à la couche OSM souhaitée et ajouter la couche Geoserver WMS (en ajoutant une couche WMS).
Ensuite, vous pouvez imprimer avec le look que vous souhaitez et plus encore à l'aide de cet outil puissant. Cordialement, Tudor
PS. Je sais que ma réponse n'est probablement pas ce que vous attendiez mais cela fonctionnera et fournira plus de personnalisation d'impression que n'importe quelle solution Web.
la source