2013-05-17 5 views
1

пытается напечатать карту с GeoEXT и GeoServer я В случае успешной, чтобы показать панель печати, но когда я нажимаю на кнопку печати я получаю эту ошибку:PrintMap с Geoext + GeoServer

 Error while generating PDF: 
org.mapfish.print.InvalidJsonValueException: spec.pages[0].dpi has an invalid value: 0 
at org.mapfish.print.config.layout.MapBlock.createTransformer(MapBlock.java:79) 
at org.mapfish.print.config.layout.MapBlock.render(MapBlock.java:51) 
at org.mapfish.print.config.layout.Page.render(Page.java:65) 
at org.mapfish.print.config.layout.MainPage.render(MainPage.java:62) 
at org.mapfish.print.config.layout.Layout.render(Layout.java:59) 
at org.mapfish.print.MapPrinter.print(MapPrinter.java:144) 
at  org.mapfish.print.servlet.MapPrinterServlet.doCreatePDFFile(MapPrinterServlet.java:275) 
at org.mapfish.print.servlet.MapPrinterServlet.createAndGetPDF(MapPrinterServlet.java:130) 
at org.mapfish.print.servlet.MapPrinterServlet.doGet(MapPrinterServlet.java:68) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:159) 
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) 
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093) 
at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:23) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74) 
at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) 
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72) 
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68) 
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72) 
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68) 
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72) 
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) 
at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:82) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68) 
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72) 
at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91) 
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) 
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) 
at org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:97) 
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:71) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:324) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) 
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) 
at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) 
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) 

я знаю, что это слишком долго, но я не могу понять, где проблема возникает и при попытке достичь MapBlock.java линии 79, у меня нет atteched источника (не найден) и мой HTML страницы:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 
     <html> 
     <head> 
    <title> 
     A map 
    </title> 
    <script src="../ext-3.4.1/adapter/ext/ext-base.js"" type="text/javascript"></script> 
    <script src="../ext-3.4.1/ext-all.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="../ext-3.4.1/resources/css/ext-all.css"> 
    <script src="../openlayers/OpenLayers.js" type="text/javascript"></script> 
    <script src="../openlayers/lib/deprecated.js" type="text/javascript"></script> 
    <script src="../GeoExt/lib/GeoExt.js" type="text/javascript"></script> 
    <link rel="stylesheet" type="text/css" href="../GeoExt/resources/css/geoext-all-debug.css"> 
    <script src="http://maps.google.com/maps/api/js?v=3&amp;sensor=false"></script> 

<script type="text/javascript"> 

    var mapPanel, printDialog; 

     Ext.onReady(function() { 
    // The PrintProvider that connects us to the print service 
    var printProvider = new GeoExt.data.PrintProvider({ 
    method: "GET", // "POST" recommended for production use 
    url: "http://localhost:8080/geoserver/pdf/info.json?var=printCapabilities", 
    customParams: { 
    mapTitle: "GeoExt Printing Demo", 
    comment: "This demo shows how to use GeoExt.PrintMapPanel" 
    } 
}); 

    // A MapPanel with a "Print..." button 
    mapPanel = new GeoExt.MapPanel({ 
renderTo: "content", 
width: 500, 
height: 350, 
map: { 
    maxExtent: new OpenLayers.Bounds(
     143.835, -43.648, 
     148.479, -39.574 
    ), 
    maxResolution: 0.018140625, 
    projection: "EPSG:4326", 
    units: 'degrees' 
}, 
layers: [new OpenLayers.Layer.WMS("Tasmania State Boundaries", 
    "http://demo.opengeo.org/geoserver/wms", 
    {layers: "topp:tasmania_state_boundaries"}, 
    {singleTile: true, numZoomLevels: 8})], 
center: [146.56, -41.56], 
zoom: 0, 
bbar: [{ 
    text: "Print...", 
    handler: function(){ 
     // A window with the PrintMapPanel, which we can use to adjust 
     // the print extent before creating the pdf. 
     printDialog = new Ext.Window({ 
      title: "Print Preview", 
      layout: "fit", 
      width: 350, 
      autoHeight: true, 
      items: [{ 
       xtype: "gx_printmappanel", 
       sourceMap: mapPanel, 
       printProvider: printProvider 
      }], 
      bbar: [{ 
       text: "Create PDF", 
       handler: function(){ printDialog.items.get(0).print(); } 
      }] 
     }); 
     printDialog.show(); 
    } 
    }] 
    }); 

    }); 

    </script> 
    </head> 
<body> 
    <div id='content'></div> 
    </body> 
</html> 

ответ

2

за исключением состояния:

spec.pages[0].dpi has an invalid value: 0

вам нужно проверить 2 вещи:

  1. ли вы DPI сконфигурированный в файле YAML? проверить это с помощью URL:

    http://localhost:8080/geoserver/pdf/info.json?var=printCapabilities

  2. Если вы это сделаете, убедитесь, что ваша печать URL, который отправляется в GeoServer имеет точки на дюйм заявила, пример из шахты: enter image description here

+1

действительно помог , большое спасибо! –