Précédent   Forum du club des développeurs et IT Pro > Applications > SIG : Système d'information Géographique
SIG : Système d'information Géographique Forum d'entraide SIG et outils géographiques
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/10/2012, 11h08   #1
yo_haha
Membre du Club
 
Inscription : novembre 2008
Messages : 298
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 298
Points : 54
Points : 54
Par défaut [Mapfish Print Module] Imprimer exactement ce qu'il y a sur la carte

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
         // 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.
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 03h29.


 
 
 
 
Partenaires

Hébergement Web