I am trying to include a legend and a div containing some tabular data to the Geoserver print plug-in aka mapfish print. While I am having some issues with rendering my tiles from my remote server (the webapp co-hosted with geoserver does not have this issue) my main concern is that the legend graphic is rendered as tiny, and because we have rule-based legends, a tiny icon will not work. The is a default scale argument in the documentation but I see no means to specify the scale to render the legend icons. I will include the yaml and some configuration code snippets.
//YAML
#===========================================================================
# allowed DPIs
#===========================================================================
dpis: [75, 150, 300]

#===========================================================================
# the allowed scales
#===========================================================================
scales:
  - 25000
  - 50000
  - 100000
  - 200000
  - 500000
  - 1000000
  - 2000000
  - 4000000

#===========================================================================
# the list of allowed hosts
#===========================================================================
hosts:
  - !localMatch
    dummy: true
  - !ipMatch
    ip: www.camptocamp.org
  - !dnsMatch
    host: labs.metacarta.com
    port: 80
  - !dnsMatch
    host: terraservice.net
    port: 80
  - !dnsMatch
    host: sigma.openplans.org
  - !dnsMatch
    host: demo.mapfish.org
  - !dnsMatch
    host: tile.stamen.com
  - !dnsMatch
    host: maps.openstreetmap.org
  - !dnsMatch
    host: www.decapower.org
  - !dnsMatch
    host: http://decapower.org
  - !dnsMatch
    host: maps.decapower.org
  - !dnsMatch
    host: http://server.arcgisonline.com

outputFilename: 'DecaMap'

layouts:
  Letter:
    mainPage:
      pageSize: LETTER
      items:
        - !map
          spacingAfter: 30
          width: 440
          height: 483
        - !legends
         backgroundColor: #FFFFFF
         borders: false
         horizontalAlignment: center
         maxWidth: 0
         maxHeight: 0
         iconMaxWidth: 0
         iconMaxHeight: 0
         iconPadding: 8 7 6 5
         textMaxWidth: 0
         textMaxHeight: 0
         textPadding: 8 7 6 5
         inline: true
         classIndentation: 10
         layerSpaceBefore: 5
         layerSpace: 5
         classSpace: 2
         layerFont: Helvetica
         layerFontSize: 10
         classFont: Helvetica
         classFontSize: 8
         fontEncoding: Cp1252
         columnMargin: 3
#===========================================================================
  A4 portrait:
#===========================================================================
    metaData:
#      title: '${mapTitle}'
      author: 'MapFish print module'
      subject: 'Simple layout'
      keywords: 'map,print'
      creator: 'MapFish'


#-------------------------------------------------------------------------
    mainPage:
      pageSize: A4
      rotation: true
      items:
        - !text
          text: '${mapTitle}'
          fontSize: 16
          spacingAfter: 30
        - !map
          spacingAfter: 30
          width: 440
          height: 483
        - !legends
         backgroundColor: #FFFFFF
         borders: false
         horizontalAlignment: left
         maxWidth: 0
         maxHeight: 0
         iconMaxWidth: 0
         iconMaxHeight: 0
         iconPadding: 8 7 6 5
         textMaxWidth: 0
         textMaxHeight:0
         textPadding: 8 7 6 5
         inline: true
         classIndentation: 5
         layerSpaceBefore: 5
         layerSpace: 5
         classSpace: 2
         layerFont: Helvetica
         layerFontSize: 10
         classFont: Helvetica
         classFontSize: 8
         fontEncoding: Cp1252
         columnMargin: 3

        - !columns
# columns can have an absolute position. In that case, they need the 3 following fields:
          absoluteX: 410
          absoluteY: 310
          width: 100
          items:
            - !scalebar
              type: bar
              maxSize: 100
              barBgColor: white
              fontSize: 8
              align: right
        - !attributes
          source: data
          spacingAfter: 30
          columnDefs:
            id:
              columnWeight: 2
              header: !text
                text: ID
                backgroundColor: #A0A0A0
              cell: !text
                text: '${id}'
            name:
              columnWeight: 5
              header: !text
                text: Name
                backgroundColor: #A0A0A0
              cell: !columns
                config:
                  cells:
                    - backgroundColor: '${nameBackgroundColor}'
                      borderWidth: 1
                      borderColor: '${nameBorderColor}'
                items:
                  - !text
                    text: '${name}'

          font: Helvetica
          fontSize: 9
          align: right
          text: '1:${scale} ${now MM.dd.yyyy}'

//-------------------------------------------------------------------------

//------ CODE FOR LEGEND ------->>
legendPanel = new GeoExt.LegendPanel({
        map: map,
        border : false,
        bodyStyle: 'background: transparent;',
        outputConfig: {autoScroll: true, autoHeight: true},
        defaults: {
//style: 'padding:5px',
               baseParams: {
LEGEND_OPTIONS: 'forceLabels:on;fontName:SansSerif.plain;fontSize:9;'//
                   }
               }
});

//legend panel styling
new Ext.Panel({
        autoScroll: true,
        baseCls: 'legend_panel',
        title: "Legend",
        renderTo: 'legendpanel',
        bodyStyle: 'background: transparent;',
//    style: 'height: 100%',
        frame : false,
        header: false,
        border: false,
        draggable: false,
        collapsible: true,
//    padding: 10,
        items: legendPanel
});

// new snippet------------------------------------------------------------------
//------ CODE FOR PRINT BUTTON ------->>
var printPage;

var printProvider = new GeoExt.data.PrintProvider({
        method: "POST", // "POST" recommended for production use
capabilities: printCapabilities, // from the info.json script in the html
        customParams: {
            mapTitle: "DECA Map",
            dpi: 300
        }
    });

printPage = new GeoExt.data.PrintPage({
        printProvider: printProvider,
        //scale: [100000]
    });

var includeLegend;



// new snippet------------------------------------------------------------------
// print button items on GeoExt panel
{
            text: "Print",
            handler: function() {
// convenient way to fit the print page to the visible map area
                printPage.fit(mapPanel, true);
                // print the page, optionally including the legend
printProvider.print(mapPanel, printPage, includeLegend && {legend: legendPanel});
            }
        },
            {xtype: "checkbox",
            boxLabel: "Legend",
            handler: function() {includeLegend = this.checked}
            }
        ],
_______________________________________________
Users mailing list
us...@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to