Saya memiliki peta yang ingin saya cetak setelah pengguna membuka beberapa lapisan. Lapisan adalah geoserver wms dan lapisan dasar adalah OSM.
Saya tahu geoserver memiliki modul pencetakan (yang diinstal dan berfungsi karena saya mendapat balasan dari geoserver / pdf / info.json? Var = printCapabilities
Yang tidak saya mengerti adalah bagaimana saya menggunakannya untuk mencetak peta saat ini dengan lapisan yang terlihat.
Saya telah melihat contoh GeoExt (mapfish) tetapi tidak membantu saya memahami.
Pembaruan 1: Saya telah menghasilkan URL berikut dengan kode:
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}]}
dan saya mendapatkan PDF kosong (hanya dengan judul) ... Apa yang salah?
openlayers-2
geoserver
printing
Alophind
sumber
sumber
Jawaban:
Proses pencetakan Geoserver melibatkan dua langkah.
Pertama di sisi server , Anda harus mengkonfigurasi file yaml Anda, yang disebut config.yaml. Buka dokumentasi terperinci di halaman dokumentasi modul cetak MapFish .
Setelah ini selesai, langkah kedua adalah untuk sisi klien . Mengingat Anda menggunakan openlayer untuk front-end Anda, untuk mendapatkan daftar lapisan yang terlihat, Anda akan memerlukan loop sederhana dengan pemeriksaan visibilitas, misalnya
Sekarang Anda harus meneruskan ini ke url cetak Anda. misalnya
Tentu saja Anda harus membuat perubahan yang relevan di URL. Selanjutnya tetapkan URL ini ke tombol cetak Anda dan panggil fungsi klik secara pragmatis.
Dan selesai !!!
sumber
Jika Anda Pengguna Chrome, cara cepat dan sederhana adalah Google Cloud Print , tetapi dirancang untuk mencetak seluruh halaman web, tetapi Anda bisa menggunakan tampilan layar penuh dan mencetaknya.
Keuntungan lain adalah Anda dapat mencetak ke printer yang terhubung di mana saja Anda telah mendaftarkan printer pada akun Anda, sehingga pencetakan seluler tersedia untuk PC desktop Anda dengan printer yang terhubung, atau setiap PC dan Printer yang telah Anda daftarkan ke akun Google Anda. Itu mendukung Printer Legacy dan printer jaringan yang dirancang khusus untuk bekerja dengan Google Cloud Print.
sumber
Saya pikir Anda akan berada di jalur yang benar dengan geoserver dan plugin mapfish. Ini adalah apa yang saya gunakan untuk melakukan pencetakan untuk baselayer WMS dan OSM saya. Ada satu hal yang perlu diperhatikan jika Anda akan menggunakan metode ini. Jika Anda ingin peta yang dicetak dipindai dengan benar, Anda tidak akan dapat menggunakan OSM langsung dari situs yang ada karena proyeksi berada dalam skala yang tidak benar. Anda perlu memuat data ke dalam basis data dan menggunakan SRS yang berbeda.
Setelah mengatakan ini, saya akan memberikan ikhtisar singkat tentang cara mencetak bekerja dengan plugin mapfish di geoserver.
Pertama, Anda perlu mengunduh plugin mapfish dan menginstalnya di instalasi geoser Anda. Ketika saya pertama kali melakukan ini, langkah itu sepertinya tidak didokumentasikan di mana pun dalam tutorial atau demo untuk dicetak, jadi sebentar sebelum saya mengetahuinya. Juga agak sulit untuk menemukan plugin.
Halaman ini menunjukkan instruksi dari Geoserver tentang cara menginstal plugin dan menggunakannya. Pada dasarnya itu rusak menjadi:
Ok sekarang setelah plugin terinstal, Anda perlu mengkonfigurasi plugin yang dilakukan dengan memodifikasi file config.yaml yang dibicarakan oleh 'thelastray' dalam jawaban mereka di atas. File harus dibuat ketika GeoServer dihidupkan ulang dan ditemukan di lokasi berikut:
Ada banyak opsi untuk ini sehingga Anda harus membaca dokumentasi di situs web Mapfish di sini.
Langkah selanjutnya adalah membuat aplikasi yang menggunakan plugin ini untuk melakukan pencetakan. Contoh aplikasi yang menggunakan pengaturan ini untuk mencetak menggunakan GeoEXT dapat ditemukan di sini . Jika Anda ingin melihat beberapa contoh, lihat halaman ini .
Semoga itu akan membantu Anda memulai.
sumber
Silakan periksa http://dev.openlayers.org/sandbox/camptocamp/canvas/openlayers/examples/exportMapCanvas.html saya harap ini akan membantu.
sumber
"Peta menjadi kertas" bisa lebih dari sekadar "pas gambar ke halaman" ... Sejarah Kartografi ditulis ke dalam kertas, dan hari ini beberapa produk kartografi masih membutuhkan kertas.
Hari ini, kertas adalah PDF - lupakan EPUB atau "cetak dengan browser", mereka menunggu standar, CSS3, dll. Untuk masa depan ... Dan produk kartografi (kertas) berkualitas baik membutuhkan XSLT-FO atau CSS2 . Dengan (X) HTML + CSS2 Anda dapat menghasilkan PDF yang bagus (!) ... HTML itu bukan "untuk peramban", adalah untuk alat "pembuatan PDF" (yang menghasilkan PDF sambil jalan atau offline).
Satu-satunya alat "profesional untuk menghasilkan PDF yang baik dengan HTML + CSS2" yang saya tahu, adalah PrinceXML : Saya diuji dengan "gambar on-fly" (SVG, JPG dan PNG) dari protokol WFS dan WMS , dan dengan OpenLayers , dan itu bekerja sangat baik (!).
sumber
Saya baru saja melakukan ini:
Unduh html2canvas.js ( https://github.com/niklasvh/html2canvas/releases )
Unduh html2canvas-proxy.php ( https://github.com/adjdred/html2canvas-proxy-php )
Menginstal keduanya di server saya + ref ke .js di tag dan di JS saya:
Memberi saya .png dari peta saat ini - yang bisa saya lakukan dengan apa pun - membutuhkan waktu kurang dari satu detik di pc saya.
Mini
sumber
Dimungkinkan untuk mencetak langsung di web dengan alat-alat yang Anda miliki tetapi itu membutuhkan keterampilan yang tidak Anda miliki.
Solusi saya untuk Anda adalah menggunakan QGIS . Dengan menginstal plugin OpenLayers di QGIS Anda dapat mengakses lapisan OSM yang Anda inginkan dan menambahkan lapisan WMS Geoserver (dengan menambahkan lapisan WMS).
Kemudian Anda dapat mencetak dengan tampilan yang Anda inginkan dan lebih banyak lagi dengan bantuan alat canggih ini. Semua yang terbaik, Tudor
PS. Saya tahu bahwa jawaban saya mungkin bukan yang Anda harapkan tetapi akan berfungsi dan memberikan lebih banyak penyesuaian cetak daripada solusi web mana pun.
sumber