我正在使用 GeoServer (2.1.1)、GeoWebCache(1.2.6)、OpenLayers(2.11)、GeoExt 开发 webGIS 应用程序。我所有的图层都通过 GeoWebCache 作为 wms 服务。任何层的示例定义如下:
var My_Layer = new OpenLayers.Layer.WMS( "My_Layer",
"http://my-ip + my-port/geoserver/gwc/service/wms",
{layers: 'layer-name',transparent: "true",format: "image/png",
tileSize: new OpenLayers.Size(256,256),
tilesOrigin : map.maxExtent.left + ',' + map.maxExtent.bottom },
{ isBaseLayer: false, visibility:false} );
到目前为止,一切都很好。但是,当我计划向前一点并尝试实现 MapFish 打印模块时……输出的 pdf 是空白的!!!我收到以下错误消息:
java.io.IOException: Error (status=400) while reading image from.......
我已经搜索了很多。根据这个选项是访问我的层作为 TMS 层。但我不想要静态图像层,而不是 GeoServer WMS 地图层。
在这里找到的另一个选项是使用OpenLayers.Control.ExportMap()。 但这限制了使用不同的比例,因为我的数据范围太大。因此,如果用户想要在特定比例下打印整个地图区域(可能是 A0 纸),在 Openlayers div 中不完全可见,这无法解决目的。
所以问题是如何在不使用 TMS 或 GeoWebCache 层的情况下完成此操作?
编辑#1: 对不起,我迟到了,因为我不在办公室。以下是我的 config.yaml 文件。我觉得没有错误,这可以打印我的 WMS 图层,直接来自 GeoServer。
dpis: [75, 150, 300]
outputFormats:
- pdf
scales:
- 10000
- 25000
- 50000
- 100000
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
layouts:
A4 portrait:
metaData:
title: 'Arunava TopoMap PDF'
author: 'Arunava print module'
subject: 'Map layout'
keywords: 'map,print'
creator: 'Arunava'
mainPage:
pageSize: A4
rotation: true
items:
- !text
text: '${mapTitle} ${now MM.dd.yyyy}'
fontSize: 20
spacingAfter: 30
- !map
spacingAfter: 30
width: 440
height: 600
- !scalebar
type: bar
maxSize: 100
barBgColor: white
fontSize: 8
align: right
- !text
font: Helvetica
fontSize: 9
align: right
text: '1:${scale}'
footer: *commonFooter
A2 portrait:
metaData:
title: 'Arunava TopoMap PDF'
author: 'Arunava print module'
subject: 'Map layout'
keywords: 'map,print'
creator: 'Arunava'
mainPage:
pageSize: A2
rotation: true
items:
- !text
text: '${mapTitle} ${now MM.dd.yyyy}'
fontSize: 20
spacingAfter: 30
- !map
spacingAfter: 30
width: 880
height: 1200
- !scalebar
type: bar
maxSize: 100
barBgColor: white
fontSize: 8
align: right
- !text
font: Helvetica
fontSize: 9
align: right
text: '1:${scale}'
footer: *commonFooter