Procurando componente de código aberto para criar PDF a partir do WMS em um aplicativo Web


8

Quero criar um PDF a partir do WMS em um aplicativo de mapa da web.

Alguém pode recomendar um componente robusto? Eu gostaria de código-fonte aberto gratuito sob uma licença relativamente favorável aos negócios (sem GPL, BSD / MIT etc., seria ideal, LGPL seria bom).

  • Nossas camadas WMS são produzidas pelo ncWMS e UNM MapServer . Também queremos sobrepor algumas camadas de provedores WMS externos.
  • EDIT : Estamos desenvolvendo nosso próprio cliente JavaScript baseado em OpenLayers.
  • Edição : Temos algum código de back-end em Java. Também consideraríamos PHP ou outras plataformas para criar o PDF.

O MapFish seria excelente, mas é GPL.


1
O QGIS Server and Client oferece saída em PDF de alta resolução paralela ao WMS, mas também é GPL.
underdark

Qual software de servidor está fornecendo o serviço WMS?
Allan Adair

@Allan eu respondi em uma edição
MarkJ

2
Acho que o MapServer suporta saída em PDF ( mapserver.org/output/pdf.html ), e a versão mais recente usa o Cairo ( cairographics.org ), lançado sob LGPL ou MPL.
Allan Adair

@ Allan Bom ponto. Você poderia fazer desse comentário uma resposta! Pergunta: teríamos que criar um arquivo MAP? Atualmente, não temos um arquivo de mapa que contém todas as camadas, estamos montando-as no cliente usando o OpenLayers. Suponho que nosso front end JavaScript retornaria ao servidor, que executaria alguns MapScript. Também teríamos que criar um arquivo MAP?
precisa saber é

Respostas:


3

Eu uso o Cairo e o Pango (ambos LGPL) juntos para criar mapas em PDF.

É uma solução de baixo nível, mas o Cairo possui excelentes recursos de desenho vetorial e manipulação de varredura, enquanto o Pango é excelente em tipografia. Os resultados gerais são ótimos, mas exigem muita codificação. Por exemplo, se eu quiser criar um mapa usando uma saída WMS, construo uma solicitação WMS, solicite a imagem e desenhe-a em uma tela PDF usando o Cairo.

Eu uso essas bibliotecas via Java-Gnome, mas existem ligações para ambos na maioria dos idiomas.


Se você considerar essa opção, também poderá procurar a libharu (em C) ou versões mais antigas do iText (java) (as mais recentes possuem uma licença AGPL que não se adequa ao seu objetivo).
precisa saber é o seguinte

1
Para exemplos de mapas criados quase inteiramente usando esse método, consulte esta publicação . O arquivo adicional 2 contém os mapas que eram originalmente vetoriais, mas foram rasterizados para reduzir o tamanho do download.
Will

@johanvdw De fato, a AGPL não se encaixa no meu objetivo. Eu poderia considerar PDFBox que está sob a licença Apache
MarkJ

@ Will Cairo parece interessante. Nosso servidor de produção é Linux, mas nossas máquinas de desenvolvimento / teste são Windows. Existe alguma maneira de usar o Cairo do Java no Windows?
MarkJ

Infelizmente, o @MarkJ java-gnome não roda no Windows (e é GPL) - não encontrei uma alternativa. As ligações Python e Mono são executadas no Windows.
Will

3

Que tal usar http://code.google.com/p/wkhtmltopdf/ ? É lgpl e permite que você gere simplesmente um pdf a partir de um modelo de página da web. Usamos essa abordagem em conjunto com o django para gerar dinamicamente o html antes de renderizá-lo em pdf com wkhtml.

Saudações

Tim


+1. Embora seja difícil com os vetores OpenLayers, esta solução permite que você personalize totalmente a página de impressão. Coloque logotipos, legendas, rodapés onde quiser, como na página html habitual, depois crie imagem ou pdf.
Den /

+1 apenas para o pensamento lateral! Para ter certeza de que entendi: você criaria uma página da Web exibindo algumas camadas de mapa usando um cliente JavaScript (por exemplo, OpenLayers) e depois renderizá-la em PDF com wkhtml?
precisa saber é

Oi Tim, como você conseguiu isso? Tentei alguns exemplos com o Open Layers, mas o mapa não é renderizado ou está compactado no lado esquerdo da caixa.
Dennis van Schaik

0

O Geomajas possui um plug-in de impressão que pode converter seu mapa em PDF e também um plug-in de relatório (em andamento) que pode ser usado para criar um relatório usando o JasperReports, que pode incluir a imagem do mapa. Ambos são AGPL, mas uma licença para negócios pode ser solicitada (fornecida pela Geosparc ).


Obrigado, eu não tinha ouvido falar de Geomajas, isso é interessante. Embora eu note que eles cobram pelas licenças favoráveis ​​aos negócios e o módulo de impressão usa o iText, o que novamente significa que você deve pagar para ser liberado da AGPL
MarkJ

0

Bem, usamos o PDFBox (licença Apache) do código do servidor Java.

Construímos solicitações WMS para as várias camadas, obtemos imagens como bitmaps na memória e as sobrepomos em um único bitmap na memória. Usando Java BufferedImagepara os bitmaps na memória. Em seguida, renderizamos o bitmap na página PDF usando o PDFBox PDJpeg .

Funciona muito bem. Um detalhe é que as imagens do mapa podem ficar um pouco embaçadas no PDF, já que você precisa codificá-las como JPEG para poder usá-las com o PDFBox, com a inevitável compactação com perdas. Você pode melhorar isso definindo a qualidade JPEG ao máximo no construtor PDFJpeg e solicitando as imagens em um tamanho grande (por exemplo, 300 dpi).

Eventualmente, planejamos liberar nosso código como código aberto. Vou postar um link quando isso acontecer.

Mais uma vez obrigado a Will, Allan e todos!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.