Hello all,
This is my first message to this list as I only recently started using GeoServer, and I hope I've come to the right place.
When playing with the Heron Mapping Client, GeoServer and Mapfish Print, I found I could not print any TMS layer. In the end, I found a solution/workaround.
I'm using GeoServer 2.2.2 on on OpenSuSU 11.4 with OpenJDK Runtime Environment (IcedTea6 1.11.5), Apache 2 and Tomcat6.
Print module from http://gridlock.opengeo.org/geoserver/2.2.x/community-latest/geoserver-2.2-SNAPSHOT-printing-plugin.zip.
Heron MC from http://geoext-viewer.googlecode.com/files/heron-0.70.zip. Using configuration based on DefaultOptionsNL_PDOK.js. Sample TMS layer (in EPSG:28992 map):
new OpenLayers.Layer.TMS("Achtergrondkaart",
Heron.pdok.urls.PDOKTMS,
{
layername: 'brtachtergrondkaart',
type: 'png',
format: "image/jpg",
isBaseLayer: true,
transparent: true,
bgcolor: "0xffffff",
visibility: true,
singleTile: false,
alpha:true,
opacity: 1.0,
attribution: "Bron: BRT Achtergrondkaart, © <a href='http://openstr…
}
)
When trying to print a map with this layer or any other TMS layer, this fails with the following exception in geoserver.log:
2012-12-08 18:28:02,292 ERROR [servlet.BaseMapServlet] - Error while generating PDF
DocumentException:_
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
> at java.lang.String.substring(String.java:1949)
> at org.mapfish.print.map.readers.TmsMapReader.<init>(TmsMapReader.java:48)
> at org.mapfish.print.map.readers.TmsMapReader.create(TmsMapReader.java:86)
> at org.mapfish.print.map.readers.MapReader.create(MapReader.java:58)
> at org.mapfish.print.map.MapChunkDrawer.renderImpl(MapChunkDrawer.java:98)
> at org.mapfish.print.ChunkDrawer.render(ChunkDrawer.java:55)
> at org.mapfish.print.ChunkDrawer.tableLayout(ChunkDrawer.java:49)
> at com.lowagie.text.pdf.PdfPTable.writeSelectedRows(Unknown Source)
[...]
Got the source from https://github.com/mapfish/mapfish-print.git. I'm aware this may be different from the source used for the jars in http://gridlock.opengeo.org/geoserver/2.2.x/community-latest/geoserver-2.2-SNAPSHOT-printing-plugin.zip. The exception seems to stem from parsing the format parameter. This parameter in turn seems based on the type from the layer definition.
I found that adding a semicolon to the type setting for the layers made the exception disappear and led to a successful creation of PDF's.
I believe the request from Heron/GeoExt to GeoServer's pdf/create.json is correct with a format parameter without the semicolon. The bit of code for parsing the format parameter in Mapfish Print looks OK in the version of the source I looked at; it checks for a semicolon before assuming there is one. But I don't know if that is the same in the sources for the version of the GeoServer print module I use...
I hope someone is interested in the information above. Maybe it's as simple a recompiling the GeoServer Printing Module from the latest sources.
Regards, and thank you,
J-----.
Jeroen Muris