Eu tenho um mapa que quero imprimir quando o usuário abrir algumas camadas. As camadas são geoserver wms e a camada base é OSM.
Sei que o geoserver possui um módulo de impressão (que está instalado e funcionando porque recebo resposta de geoserver / pdf / info.json? Var = printCapabilities
O que não entendo é como o uso para imprimir o mapa atual com camadas visíveis.
Eu olhei para o exemplo do GeoExt (mapfish), mas isso não me ajudou a entender.
Atualização 1: gerei o seguinte URL por código:
http://77.235.53.170/geoserver/pdf/print.pdf?spec={%22units%22:%22degrees%22,%22srs%22:%22EPSG:4326%22,%22layout%22:%22A4%22,%22dpi%22:%22300%22,%22mapTitle%22:%22This%20is%20the%20map%20title%22,%22comment%22:%22This%20is%20the%20map%20comment%22,%22resourcesUrl%22:%20%22http://77.235.53.170/img%22,%22layers%22:[{%22baseURL%22:%22http://77.235.53.170/geoserver/Lehavim/wms%22,%22opacity%22:1,%22singleTile%22:true,%22type%22:%22WMS%22,%22layers%22:[%22%D7%A7%D7%95%20%D7%9E%D7%99%D7%9D%22],%22format%22:%22image/jpeg%22,%22styles%22:[%22%22]}],%22pages%22:[{%22center%22:[3875254.1134954,3680894.557955],%22scale%22:32000,%22rotation%22:0}]}
e estou ficando em PDF vazio (apenas com o título) ... O que pode estar errado?
openlayers-2
geoserver
printing
Alophind
fonte
fonte
Respostas:
O processo de impressão do Geoserver envolve duas etapas.
Primeiro no lado do servidor , você deve configurar seu arquivo yaml, chamado config.yaml. Consulte a documentação detalhada na página de documentação do módulo de impressão MapFish .
Feito isso, o segundo passo é para o lado do cliente . Considerando que você está usando openlayers para seu front-end, para obter a lista de camadas visíveis, você precisará de um loop simples com verificação de visibilidade, por exemplo
Agora você deve passar isso para o seu URL de impressão. por exemplo
Claro que você precisará fazer alterações relevantes no URL. Em seguida, atribua esse URL ao seu botão de impressão e chame uma função de clique pragmaticamente.
E feito!!!
fonte
Se você é um usuário do Chrome, uma maneira rápida e simples é o Google Cloud Print , mas foi projetado para imprimir a página da web inteira, mas você pode usar uma exibição em tela cheia e imprimi-la.
Outra vantagem é que você pode imprimir em uma impressora conectada em qualquer lugar em que tenha impressoras registradas em sua conta, para que a impressão móvel esteja disponível no seu PC de mesa com uma impressora conectada ou em qualquer PC e impressora que você tenha registrado em sua conta do Google. Ele suporta impressoras herdadas e impressoras de rede projetadas especificamente para funcionar com o Google Cloud Print.
fonte
Eu acho que você está seguindo o caminho certo com o geoserver e o plugin mapfish. É o que eu uso para imprimir em minhas camadas de base WMS e OSM. Há uma coisa a observar se você vai usar esse método. Se você deseja que seus mapas impressos sejam escalonados corretamente, não será possível usar o OSM diretamente a partir desse site, pois a projeção em que ele está não é dimensionada corretamente. Você precisará carregar os dados em um banco de dados e usar um SRS diferente.
Dito isto, darei a você um rápido resumo de como fazer a impressão funcionar com o plugin mapfish no geoserver.
Primeiro, você precisará baixar o plug-in mapfish e instalá-lo na instalação do geoser. Quando fiz isso pela primeira vez, essa etapa não parecia estar documentada em nenhum lugar dos tutoriais ou demos para impressão; portanto, demorou um pouco para eu descobrir. Também foi um pouco difícil encontrar o plugin.
Esta página mostra as instruções do Geoserver sobre como instalar o plugin e usá-lo. Basicamente, divide-se em:
Ok, agora que o plug-in está instalado, você precisará configurar o plug-in, modificando o arquivo config.yaml que 'thelastray' fala na resposta acima. O arquivo deve ser criado quando o GeoServer for reiniciado e encontrado no seguinte local:
Existem muitas opções para isso, então você precisará passar pela documentação no site do Mapfish aqui.
O próximo passo é criar um aplicativo que use esse plugin para imprimir. Um exemplo de aplicativo que usa essa configuração para imprimir usando o GeoEXT pode ser encontrado aqui . Se você quiser ver mais alguns exemplos, consulte esta página.
Espero que você comece.
fonte
Confira http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html Espero que ajude.
fonte
"Mapear em papel" pode ser mais do que simples "ajustar a imagem à página" ... A história da cartografia foi escrita em papel, e hoje alguns produtos cartográficos ainda exigem papel.
Hoje, o papel é PDF - esqueça o EPUB ou "imprima pelo navegador", eles estão aguardando padrões, CSS3, etc., são para o futuro ... E produtos cartográficos de boa qualidade (papel) precisam XSLT-FO ou CSS2 . Com (X) HTML + CSS2, você pode produzir um bom PDF (!) ... Esse HTML não é "para navegador", é para uma ferramenta de "geração de PDF" (que gera PDF on-fly ou offline).
A única "ferramenta profissional para gerar um bom PDF com HTML + CSS2" que eu conheço é o PrinceXML : testei com "imagens em tempo real" (SVG, JPG e PNG) dos protocolos WFS e WMS e com OpenLayers e funciona tão bem (!).
fonte
Acabei de fazer isso:
Html2canvas.js baixado ( https://github.com/niklasvh/html2canvas/releases )
Html2canvas-proxy.php baixado ( https://github.com/adjdred/html2canvas-proxy-php )
Instalei os dois no meu servidor + ref para .js na tag e no meu JS:
Dá-me um .png do mapa atual - com o qual posso fazer o que for - leva menos de um segundo no meu pc.
Mini
fonte
É possível imprimir diretamente na web com as ferramentas que você possui, mas isso exigiria algumas habilidades que você não possui.
Minha solução para você seria usar o QGIS . Ao instalar o plug-in OpenLayers no QGIS, você pode acessar a camada OSM desejada e adicionar a camada Geoserver WMS (adicionando uma camada WMS).
Em seguida, você pode imprimir com a aparência desejada e muito mais com a ajuda desta poderosa ferramenta. Tudo de bom, Tudor
PS. Sei que minha resposta provavelmente não é a que você esperava, mas funcionará e oferece mais personalização de impressão do que qualquer solução da web.
fonte