Buscando un componente de código abierto para crear PDF desde WMS en una aplicación web

8

Quiero crear un PDF desde WMS en una aplicación de mapa web.

¿Alguien puede recomendar un componente robusto? Quisiera código abierto gratuito bajo una licencia relativamente amigable para los negocios (no sería ideal GPL, BSD / MIT, etc. LGPL estaría bien).

  • Nuestras capas WMS son producidas por ncWMS y UNM MapServer . También queremos superponer algunas capas de proveedores externos de WMS.
  • EDITAR : Estamos desarrollando nuestro propio cliente JavaScript basado en OpenLayers.
  • EDITAR : Tenemos un código de back-end en Java. También consideraríamos PHP u otras plataformas para crear el PDF.

MapFish sería excelente pero es GPL.

MarkJ
fuente
1
QGIS Server y Client ofrecen salida PDF de alta resolución paralela a WMS pero también es GPL.
oscuro
¿Qué software de servidor proporciona el servicio WMS?
Allan Adair
@Allan He respondido en una edición
MarkJ
2
Creo que MapServer admite la salida en PDF ( mapserver.org/output/pdf.html ), y la versión más nueva usa Cairo ( cairographics.org ), que se publica bajo LGPL o MPL.
Allan Adair
@Allan Buen punto. ¡Podrías hacer que ese comentario sea una respuesta! Pregunta: ¿tendríamos que crear un archivo MAP? Actualmente no tenemos un archivo de mapa que contenga todas las capas, las estamos ensamblando en el cliente usando OpenLayers. Supongo que nuestro front-end de JavaScript volvería a llamar al servidor, que luego ejecutaría MapScript. ¿Tendríamos que hacer también un archivo MAP?
MarkJ

Respuestas:

3

Uso Cairo y Pango (ambos LGPL) juntos para crear mapas PDF.

Es una solución de bajo nivel, pero Cairo tiene excelentes capacidades de dibujo de vectores y manejo de ráster, mientras que Pango es excelente en la composición tipográfica. Los resultados generales son excelentes, pero requiere mucha codificación. Por ejemplo, si quiero crear un mapa usando una salida WMS, construyo una solicitud WMS, solicito la imagen y la dibujo en un lienzo PDF usando Cairo.

Utilizo estas bibliotecas a través de Java-Gnome, pero hay enlaces para ambos en la mayoría de los idiomas.

Será
fuente
Si considera esta opción, también puede buscar libharu (en C) o versiones anteriores de iText (java) (las más nuevas tienen una licencia AGPL que no se ajusta a su propósito).
johanvdw
1
Para ver ejemplos de mapas creados casi por completo con este método, consulte esta publicación . El archivo adicional 2 contiene los mapas, que originalmente eran vectores pero se han rasterizado para reducir el tamaño de descarga.
Will
@johanvdw De hecho, la AGPL no se ajusta a mi propósito. Podría considerar PDFBox que está bajo la licencia de Apache
MarkJ
@ Will Cairo suena interesante. Nuestro servidor de producción es Linux pero nuestras máquinas de desarrollo / prueba son Windows. ¿Hay alguna forma de usar Cairo desde Java en Windows?
MarkJ
Lamentablemente, @MarkJ java-gnome no se ejecuta en Windows (y es GPL): no he encontrado una alternativa. Sin embargo, los enlaces Python y Mono se ejecutan en Windows.
Will
3

¿Qué pasa con el uso de http://code.google.com/p/wkhtmltopdf/ ? Es lgpl y le permite simplemente generar un pdf desde una plantilla de página web. Utilizamos este enfoque junto con django para generar dinámicamente el html antes de convertirlo en pdf con wkhtml.

Saludos

Tim

Tim Sutton
fuente
+1. Aunque es complicado con los vectores OpenLayers, esta solución le permite personalizar completamente la página de impresión. Coloque logotipos, leyendas, pies de página donde desee, como en la página html habitual, luego cree una imagen o un pdf a partir de ella.
denu
¡+1 para el pensamiento lateral solo! Para estar seguro de que he entendido: ¿crearía una página web que muestre algunas capas de mapa utilizando un cliente JavaScript (por ejemplo, OpenLayers) y luego la procese en PDF con wkhtml?
MarkJ
Hola Tim, ¿cómo conseguiste que esto funcionara? Intenté algunos ejemplos con Open Layers, pero el mapa no se representa o está comprimido al lado izquierdo del cuadro.
Dennis van Schaik
0

Geomajas tiene un complemento de impresión que puede convertir su mapa a PDF y también un complemento de informes (en progreso) que se puede usar para crear un informe usando JasperReports que puede incluir la imagen del mapa. Ambos son AGPL, pero se puede solicitar una licencia amigable para los negocios (proporcionada por Geosparc ).

Joachim Van der Auwera
fuente
Gracias, no había oído hablar de Geomajas, eso es interesante. Aunque noto que cobran por las licencias favorables para las empresas y el módulo de impresión usa iText, lo que nuevamente significa que debe pagar para ser liberado de la AGPL
MarkJ
0

Bueno, usamos PDFBox (licencia de Apache) del código del lado del servidor Java.

Construimos solicitudes WMS para las diversas capas, obtenemos imágenes como mapas de bits en memoria y las superponemos en un único mapa de bits en memoria. Uso de Java BufferedImagepara los mapas de bits en memoria. Luego, renderizamos el mapa de bits en la página PDF usando PDFBox PDJpeg .

Funciona bastante bien Un inconveniente es que las imágenes del mapa pueden volverse un poco borrosas en el PDF, ya que debe codificarlas como JPEG para usarlas con PDFBox, con la inevitable compresión con pérdida. Puede mejorar esto configurando la calidad JPEG al máximo en el constructor PDFJpeg y solicitando las imágenes a gran tamaño (por ejemplo, 300 ppp).

Eventualmente planeamos lanzar nuestro código como código abierto. Publicaré un enlace cuando esto suceda.

Gracias de nuevo a Will, Allan y todos!

MarkJ
fuente