I have followed this well-known sequence to use the Geoserver printing module:
cd /var/lib/tomcat7/webappssudo wget http://ares.boundlessgeo.com/geoserver/2.6.x/geoserver-2.6.x-latest-war.zipsudo unzip geoserver-2.6.x-latest-war.zip geoserver.warcd /var/lib/tomcat7/webapps/geoserver/WEB-INF/libsudo wget http://ares.boundlessgeo.com/geoser...eoserver-2.6-SNAPSHOT-printing-plugin.zipsudo unzip geoserver-2.6-SNAPSHOT-printing-plugin.zipsudo service tomcat7 restartGo to the GEOSERVER_DATA_DIR (/var/lib/tomcat7/webapps/geoserver/data) and a new folder called printing should be present, with config.yaml inside.But I use 2.8 versions. http://localhost:8080/geoserver/pdf/info.json produces the right specs:
{"scales":[{"name":"1:25,000","value":"25000.0"},{"name":"1:50,000","value":"50000.0"},{"name":"1:100,000","value":"100000.0"},{"name":"1:200,000","value":"200000.0"},{"name":"1:500,000","value":"500000.0"},{"name":"1:1,000,000","value":"1000000.0"},{"name":"1:2,000,000","value":"2000000.0"},{"name":"1:4,000,000","value":"4000000.0"}],"dpis":[{"name":"75","value":"75"},{"name":"150","value":"150"},{"name":"300","value":"300"}],"outputFormats":[{"name":"pdf"}],"layouts":[{"name":"A4 portrait","map":{"width":440,"height":483},"rotation":true},{"name":"Legal","map":{"width":440,"height":483},"rotation":false}],"printURL":"http://localhost:8080/geoserver/pdf/print.pdf","createURL":"http://localhost:8080/geoserver/pdf/create.json"}I use LinuxMint Rebecca (14.04 if I'm right), I read somewhere that Tomcat has some permissions issues, therefore I used from here:
sudo apt-get install authbindsudo touch /etc/authbind/byport/80sudo chmod 500 /etc/authbind/byport/80sudo chown tomcat7 /etc/authbind/byport/80However, using the default config.yaml I get:
Error while generating PDF
rg.mapfish.print.InvalidValueException: url has an invalid value: http://geoserver.org/img/geoserver-logo.png at org.mapfish.print.PDFUtils.createImage(PDFUtils.java:668) at org.mapfish.print.PDFUtils.createImageChunk(PDFUtils.java:656) at org.mapfish.print.PDFUtils.createImageChunk(PDFUtils.java:653) at org.mapfish.print.config.layout.ImageBlock.render(ImageBlock.java:66) at org.mapfish.print.PDFUtils.createCell(PDFUtils.java:624) at org.mapfish.print.PDFUtils.buildTable(PDFUtils.java:609) at org.mapfish.print.config.layout.ColumnsBlock.render(ColumnsBlock.java:72) at org.mapfish.print.PDFUtils.createCell(PDFUtils.java:624) at org.mapfish.print.PDFUtils.buildTable(PDFUtils.java:609) at org.mapfish.print.config.layout.HeaderFooter.render(HeaderFooter.java:55) at org.mapfish.print.PDFCustomBlocks.addFooter(PDFCustomBlocks.java:134) at org.mapfish.print.PDFCustomBlocks.onEndPage(PDFCustomBlocks.java:89) at com.itextpdf.text.pdf.PdfDocument.newPage(PdfDocument.java:911) at com.itextpdf.text.Document.newPage(Document.java:363) at org.mapfish.print.config.layout.Page.render(Page.java:63) at org.mapfish.print.config.layout.MainPage.render(MainPage.java:63) at org.mapfish.print.config.layout.Layout.render(Layout.java:59) at org.mapfish.print.output.AbstractOutputFormat.doPrint(AbstractOutputFormat.java:30) at org.mapfish.print.output.PdfOutputFactory.print(PdfOutputFactory.java:58) at org.mapfish.print.MapPrinter.print(MapPrinter.java:173) at org.mapfish.print.servlet.MapPrinterServlet.doCreatePDFFile(MapPrinterServlet.java:366) at org.mapfish.print.servlet.MapPrinterServlet.createAndGetPDF(MapPrinterServlet.java:166) at org.mapfish.print.servlet.MapPrinterServlet.doGet(MapPrinterServlet.java:97) at javax.servlet.http.HttpServlet.service(HttpServlet.java:620) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 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:620) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75) at org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71) at org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71) at org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) 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:73) at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) at org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92) at org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:83) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) at org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53) at org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73) at org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92) 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:135) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:87) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:315) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)Caused by: java.io.IOException: Circular redirect to 'http://geoserver.org:80/img/geoserver-logo.png' at org.mapfish.print.PDFUtils.handleImageLoadError(PDFUtils.java:357) at org.mapfish.print.PDFUtils.loadImageFromUrl(PDFUtils.java:341) at org.mapfish.print.PDFUtils.getImageDirect(PDFUtils.java:182) at org.mapfish.print.PDFUtils.getImage(PDFUtils.java:102) at org.mapfish.print.PDFUtils.createImage(PDFUtils.java:666) ... 109 moreWhat would be the problem here?
Thanks for any pointers,
Software installed:
ii libtomcat7-java 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- core librariesii tomcat7 7.0.52-1ubuntu0.3 all Servlet and JSP engineii tomcat7-admin 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- admin web applicationsii tomcat7-common 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- common filesii tomcat7-docs 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- documentationii tomcat7-examples 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- example web applicationsThis GeoServer instance is running version 2.8.0. For more information please contact the administrator.UPDATE:
After testing Iant's answer (thanks for that btw), I get:
Warning: Couldn't read data from file "spec.json", this makes an empty POST.What I did was:
gery@gery ~ $ curl -H "Content-Type: application/json" -X POST --data @spec.json http://localhost:8080/geoserver/pdf/print.pdf > print.pdfWarning: Couldn't read data from file "spec.json", this makes an empty POST.% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 9379 0 9379 0 0 384k 0 --:--:-- --:--:----:--:-- 398k
أكثر...
cd /var/lib/tomcat7/webappssudo wget http://ares.boundlessgeo.com/geoserver/2.6.x/geoserver-2.6.x-latest-war.zipsudo unzip geoserver-2.6.x-latest-war.zip geoserver.warcd /var/lib/tomcat7/webapps/geoserver/WEB-INF/libsudo wget http://ares.boundlessgeo.com/geoser...eoserver-2.6-SNAPSHOT-printing-plugin.zipsudo unzip geoserver-2.6-SNAPSHOT-printing-plugin.zipsudo service tomcat7 restartGo to the GEOSERVER_DATA_DIR (/var/lib/tomcat7/webapps/geoserver/data) and a new folder called printing should be present, with config.yaml inside.But I use 2.8 versions. http://localhost:8080/geoserver/pdf/info.json produces the right specs:
{"scales":[{"name":"1:25,000","value":"25000.0"},{"name":"1:50,000","value":"50000.0"},{"name":"1:100,000","value":"100000.0"},{"name":"1:200,000","value":"200000.0"},{"name":"1:500,000","value":"500000.0"},{"name":"1:1,000,000","value":"1000000.0"},{"name":"1:2,000,000","value":"2000000.0"},{"name":"1:4,000,000","value":"4000000.0"}],"dpis":[{"name":"75","value":"75"},{"name":"150","value":"150"},{"name":"300","value":"300"}],"outputFormats":[{"name":"pdf"}],"layouts":[{"name":"A4 portrait","map":{"width":440,"height":483},"rotation":true},{"name":"Legal","map":{"width":440,"height":483},"rotation":false}],"printURL":"http://localhost:8080/geoserver/pdf/print.pdf","createURL":"http://localhost:8080/geoserver/pdf/create.json"}I use LinuxMint Rebecca (14.04 if I'm right), I read somewhere that Tomcat has some permissions issues, therefore I used from here:
sudo apt-get install authbindsudo touch /etc/authbind/byport/80sudo chmod 500 /etc/authbind/byport/80sudo chown tomcat7 /etc/authbind/byport/80However, using the default config.yaml I get:
Error while generating PDF
Thanks for any pointers,
Software installed:
ii libtomcat7-java 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- core librariesii tomcat7 7.0.52-1ubuntu0.3 all Servlet and JSP engineii tomcat7-admin 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- admin web applicationsii tomcat7-common 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- common filesii tomcat7-docs 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- documentationii tomcat7-examples 7.0.52-1ubuntu0.3 all Servlet and JSP engine -- example web applicationsThis GeoServer instance is running version 2.8.0. For more information please contact the administrator.UPDATE:
After testing Iant's answer (thanks for that btw), I get:
Warning: Couldn't read data from file "spec.json", this makes an empty POST.What I did was:
gery@gery ~ $ curl -H "Content-Type: application/json" -X POST --data @spec.json http://localhost:8080/geoserver/pdf/print.pdf > print.pdfWarning: Couldn't read data from file "spec.json", this makes an empty POST.% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed100 9379 0 9379 0 0 384k 0 --:--:-- --:--:----:--:-- 398k
أكثر...