У меня есть карта, которую я хочу напечатать, когда пользователь откроет несколько слоев. Слои - это геосервер wms, а базовый уровень - OSM.
Я знаю, что у геосервера есть модуль печати (который установлен и работает, потому что я получаю ответ от geoserver / pdf / info.json? Var = printCapabilities
Что я не понимаю, так это как я использую его для печати текущей карты с видимыми слоями.
Я посмотрел пример GeoExt (mapfish), но это не помогло мне понять.
Обновление 1: я сгенерировал следующий URL по коду:
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}]}
и я получаю пустой PDF (только с заголовком) ... Что может быть не так?
openlayers-2
geoserver
printing
Alophind
источник
источник
Ответы:
Процесс печати Geoserver состоит из двух этапов.
Сначала на стороне сервера вы должны настроить свой файл yaml, который называется config.yaml. Просмотрите подробную документацию на странице документации модуля печати MapFish .
Как только это будет сделано, второй шаг для стороны клиента . Учитывая, что вы используете openlayers для внешнего интерфейса, чтобы получить список видимых слоев, вам понадобится простой цикл с проверкой видимости, например
Теперь вы должны передать это на ваш URL для печати. например
Конечно, вам придется внести соответствующие изменения в URL. Затем назначьте этот URL вашей кнопке печати и затем прагматично вызовите функцию щелчка.
И сделано !!!
источник
Если вы являетесь пользователем Chrome, быстрый и простой способ - Google Cloud Print , но он предназначен для печати всей веб-страницы, но вы можете использовать полноэкранный режим и распечатать его.
Другое преимущество заключается в том, что вы можете печатать на подключенном принтере в любом месте, где у вас есть зарегистрированные принтеры в вашей учетной записи, поэтому мобильная печать доступна на вашем настольном ПК с подключенным принтером или на любом ПК и принтере, которые вы зарегистрировали в своей учетной записи Google. Он поддерживает устаревшие принтеры и сетевые принтеры, специально предназначенные для работы с Google Cloud Print.
источник
Я думаю, что вы идете по правильному пути с геосервером и плагином mapfish. Это то, что я использую для печати для своих базовых слоев WMS и OSM. Есть одна вещь, на которую стоит обратить внимание, если вы собираетесь использовать этот метод. Если вы хотите, чтобы распечатанные карты были правильно масштабированы, вы не сможете использовать OSM непосредственно с этого сайта, поскольку проекция, в которой он находится, не масштабируется правильно. Вам нужно будет загрузить данные в базу данных и использовать другой SRS.
Сказав это, я дам вам краткое изложение того, как заставить печать работать с плагином mapfish в geoserver.
Сначала вам нужно скачать плагин mapfish и установить его в своей установке геосер. Когда я впервые сделал это, этот шаг, казалось, не был задокументирован нигде в руководствах или демонстрациях для печати, так что прошло некоторое время, прежде чем я понял это. Также было несколько сложно найти плагин.
На этой странице показаны инструкции Geoserver о том, как установить плагин и использовать его. В основном это разбивается на:
Хорошо, теперь, когда плагин установлен, вам нужно будет настроить плагин, изменив файл config.yaml, о котором thelastray говорит в ответе выше. Файл должен быть создан при перезапуске GeoServer и находится в следующем месте:
Есть много вариантов для этого, поэтому вам нужно будет просмотреть документацию на сайте Mapfish здесь.
Следующим шагом является создание приложения, которое использует этот плагин для печати. Пример приложения, использующего эту настройку для печати с использованием GeoEXT, можно найти здесь . Если вы хотите увидеть еще несколько примеров, посмотрите на этой странице.
Надеюсь, это поможет вам.
источник
Пожалуйста, проверьте http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html, я надеюсь, что это поможет.
источник
«Карта на бумаге» может быть более чем просто «подогнать изображение к странице» ... История картографии была записана на бумаге, и сегодня некоторые картографические продукты все еще требуют бумагу.
Сегодня бумага - это PDF - забудьте EPUB или «печать через браузер», они ждут стандартов, CSS3 и т. Д., Для будущего ... А для картографической продукции хорошего качества (на бумаге) требуется XSLT-FO или CSS2 . С помощью (X) HTML + CSS2 вы можете создавать хорошие PDF (!) ... Этот HTML не для браузера, а для инструмента создания PDF (который генерирует PDF на лету или в автономном режиме).
Единственный профессиональный «инструмент для создания хорошей PDF с HTML + CSS2» , что я знаю, это PrinceXML : я тестировал с «на лету изображений» (SVG, JPG и PNG) с WFS и WMS протоколов, и с OpenLayers , и работает так хорошо (!).
источник
Я только что сделал это:
Загруженный html2canvas.js ( https://github.com/niklasvh/html2canvas/releases )
Загруженный html2canvas-proxy.php ( https://github.com/adjdred/html2canvas-proxy-php )
Установил их как на моем сервере + ссылка на .js в теге и в моем JS:
Дает мне .png текущей карты - что я могу сделать с чем угодно - занимает менее секунды на моем компьютере.
Мини
источник
Можно печатать прямо в Интернете с помощью имеющихся у вас инструментов, но для этого потребуются некоторые навыки, которыми вы не обладаете.
Мое решение для вас будет использовать QGIS . Установив плагин OpenLayers в QGIS, вы можете получить доступ к нужному слою OSM и добавить слой Geoserver WMS (добавив слой WMS).
Затем вы можете печатать с нужным вам видом и больше с помощью этого мощного инструмента. Всего наилучшего, Тюдор
PS. Я знаю, что мой ответ, вероятно, не тот, который вы ожидали, но он будет работать и обеспечит больше настроек печати, чем любое веб-решение.
источник