Quantcast
Channel: Forum SIG - Systèmes d'Information Géographique et Géomatique
Viewing all articles
Browse latest Browse all 8030

[Mapfish Print Module] Imprimer exactement ce qu'il y a sur la carte

$
0
0
Bonjour,

Je voudrais savoir comment configurer le module d'impression de Mapfish pour imprimer exactement ce qu'il y a sur la carte. J'ai une carte OpenLayers avec des couches Vector, WMS, OSM, WFS, Markers et des objets Popup. Ces couches peuvent être visibles ou non (avec un setVisibility(true/false)) et peuvent être d'opacité variable (setOpacity(float)).
Y a-t-il un tutoriel qui montre comment faire ? Sinon, pourriez-vous prendre de votre temps, SVP, pour m'expliquer comment faire ?

L'état actuel de mon outil d'impression est le suivant :
J'utilise la librairie ExtJS 3.4 et GeoExt 1.1
Code:

        // Le printProvider.
        var printProvider = new GeoExt.data.PrintProvider({
        method: "GET",
        encoding: "UTF-8",
        capabilities: printCapabilities
        });

          // La configuration de la page d'impression.
    var printPage = new GeoExt.data.PrintPage({
        printProvider: printProvider
        });
   
        // La carte de l'aperçu avant impression.
    var mapPanelPrint = new GeoExt.PrintMapPanel({
        map: {controls: [new OpenLayers.Control.Navigation()]},
        sourceMap: map, // map : carte OpenLayers.
        printProvider: printProvider,
        region: "center",
        width : 265,
        height : 355
    });
   
    // Le formulaire avec les options d'impression : titre, commentaire, taille et rotation.
    var formPanel = new Ext.form.FormPanel({
        region: "west",
        width: 150,
    height: 355,
        bodyStyle: "padding:5px",
        labelAlign: "top",
        defaults: {anchor: "100%"},
        items: [
            {
                xtype: "textfield",
                name: "mapTitle",
                fieldLabel: "Titre"
            },       
            {
                xtype: "textarea",
                name: "comment",
                value: "",
                fieldLabel: "Commentaire",
                plugins: new GeoExt.plugins.PrintPageField({
                    printPage: printPage
                })
            }, {
                xtype: "combo",
                store: printProvider.layouts,
                displayField: "name",
                fieldLabel: "Taille",
                typeAhead: true,
                mode: "local",
                triggerAction: "all",
                plugins: new GeoExt.plugins.PrintProviderField({
                    printProvider: printProvider
                })
            },{
                xtype: "textfield",
                name: "rotation",
                fieldLabel: "Rotation",
                plugins: new GeoExt.plugins.PrintPageField({
                    printPage: printPage
                })
            }],
        buttons: [{
            text: "Créer le PDF",
            handler: function() {
                // Récupérer le titre de la carte depuis le formulaire.
                printProvider.customParams.mapTitle = formPanel.getForm().getValues()['mapTitle'];
               
                                // Pour que l'étendu de la carte imprimée soit exactement celui de la carte d'aperçu.
                                printPage.fit(mapPanelPrint, true);

                                // Impression.
                                printProvider.print(mapPanelPrint, printPage);
              }
          }]
        });
   
    // Création d'un bouton qui ouvre un dialogue d'impression.
    print = new Ext.Button({
        iconCls: 'print',
        tooltip: "Imprimer la carte",
        handler: function(){   
            printDialog = new Ext.Window({
                title: "Aperçu avant impression",
                layout: 'border',
                items: [mapPanelPrint, formPanel]
            });
            printDialog.setSize(415,355);
            printDialog.on('show', function(){
                printDialog.center();
            });
            printDialog.show();
        }
    });

Avec cette configuration, je n'obtiens pas les popups ni les couches Vectors dans mon impression. De plus, les changements de visibilité et d'opacité des couches ne sont pas pris en compte.
De plus, printPage.fit() ne force pas l'obtention de l'étendue de la carte d'aperçu dans la carte imprimée. L'étendue de cette dernière est un peu plus grande.
Et l'attribut "encoding : 'UTF-8'" dans le printProvider ne force pas l'utilisation de cet encodage sur la page imprimée.

Auriez-vous des pistes pour régler tous ces soucis ?

Bien cordialement.

Viewing all articles
Browse latest Browse all 8030

Trending Articles