Mencari komponen open source untuk membuat PDF dari WMS dalam aplikasi web

8

Saya ingin membuat PDF dari WMS di aplikasi peta web.

Adakah yang bisa merekomendasikan komponen yang kuat? Saya ingin open-source gratis di bawah lisensi yang relatif ramah bisnis (tidak ada GPL, BSD / MIT dll. Akan ideal, LGPL akan baik-baik saja).

  • Lapisan WMS kami diproduksi oleh ncWMS dan UNM MapServer . Kami juga ingin overlay beberapa lapisan dari penyedia WMS eksternal.
  • EDIT : Kami sedang mengembangkan klien JavaScript kami sendiri berdasarkan OpenLayers.
  • EDIT : Kami memiliki beberapa kode backend di Jawa. Kami juga akan mempertimbangkan PHP atau platform lain untuk membuat PDF.

MapFish akan sangat baik tetapi GPL.

MarkJ
sumber
1
QGIS Server dan Klien menawarkan output PDF beresolusi tinggi yang paralel dengan WMS tetapi juga GPL.
underdark
Perangkat lunak server apa yang menyediakan layanan WMS?
Allan Adair
@ Allan Saya telah menjawab dalam edit
MarkJ
2
Saya pikir MapServer mendukung output PDF ( mapserver.org/output/pdf.html ), dan versi yang lebih baru menggunakan Cairo ( cairographics.org ), yang dirilis di bawah LGPL atau MPL.
Allan Adair
@ Semua poin bagus. Anda dapat membuat komentar itu sebagai jawaban! Pertanyaan: apakah kita harus membuat file MAP? Saat ini kami tidak memiliki file peta yang berisi semua lapisan, kami sedang merakitnya di klien menggunakan OpenLayers. Saya kira ujung depan JavaScript kita akan memanggil kembali ke server, yang kemudian akan menjalankan beberapa MapScript. Apakah kita juga harus membuat file MAP?
MarkJ

Jawaban:

3

Saya menggunakan Kairo dan Pango (keduanya LGPL) bersama untuk membuat peta PDF.

Ini adalah solusi tingkat rendah, tetapi Kairo memiliki gambar vektor yang luar biasa dan kemampuan penanganan raster, sementara Pango sangat baik dalam pengaturan huruf. Hasil keseluruhannya bagus, tetapi memang membutuhkan banyak pengkodean. Misalnya jika saya ingin membuat peta menggunakan output WMS saya membuat permintaan WMS, meminta gambar dan menggambarnya ke kanvas PDF menggunakan Kairo.

Saya menggunakan pustaka-pustaka ini melalui Java-Gnome tetapi ada binding untuk keduanya dalam kebanyakan bahasa.

Akan
sumber
Jika Anda mempertimbangkan opsi ini, Anda juga dapat melihat libharu (dalam C) atau versi iText (java) yang lebih lama (yang lebih baru memiliki lisensi AGPL yang tidak sesuai dengan tujuan Anda).
johanvdw
1
Untuk contoh peta yang dibuat hampir seluruhnya menggunakan metode ini, silakan lihat publikasi ini . File tambahan 2 berisi peta, yang awalnya vektor tetapi telah dirasterisasi untuk mengurangi ukuran unduhan.
Will
@ johanvdw Memang AGPL tidak sesuai dengan tujuan saya. Saya mungkin mempertimbangkan PDFBox yang berada di bawah lisensi Apache
MarkJ
@ Akankah Kairo terdengar menarik. Server produksi kami adalah Linux tetapi mesin pengembangan / pengujian kami adalah Windows. Apakah ada cara untuk menggunakan Kairo dari Java di Windows?
MarkJ
@ MarkJ java-gnome sayangnya tidak berjalan di Windows (dan ini GPL) - Saya belum menemukan alternatif. Binding Python dan Mono berjalan di Windows sekalipun.
Will
3

Bagaimana dengan menggunakan http://code.google.com/p/wkhtmltopdf/ ? Ini adalah lgpl dan memungkinkan Anda untuk hanya menghasilkan pdf dari templat halaman web. Kami menggunakan pendekatan ini bersama dengan Django untuk menghasilkan html secara dinamis sebelum mengubahnya menjadi pdf dengan wkhtml.

Salam

Tim

Tim Sutton
sumber
+1. Meskipun rumit dengan vektor OpenLayers, solusi ini memungkinkan Anda untuk sepenuhnya menyesuaikan halaman cetakan. Letakkan logo, legenda, footer di mana pun Anda inginkan seperti di halaman html biasa, lalu buat gambar atau pdf darinya.
denu
+1 untuk berpikir lateral saja! Yang pasti saya mengerti: Anda akan membuat halaman web yang menampilkan beberapa lapisan peta menggunakan klien JavaScript (misalnya OpenLayers), dan kemudian merendernya ke PDF dengan wkhtml?
MarkJ
Hai Tim, bagaimana Anda membuatnya bekerja? Saya mencoba beberapa contoh dengan Open Layers, tetapi peta tidak dapat ditampilkan, atau dikompres ke sisi kiri kotak.
Dennis van Schaik
0

Geomajas memiliki plug-in pencetakan yang dapat mengkonversi peta Anda ke PDF dan juga plug-in pelaporan (sedang berlangsung) yang dapat digunakan untuk membuat laporan menggunakan JasperReports yang dapat menyertakan gambar peta. Keduanya AGPL tetapi lisensi ramah bisnis dapat diminta (disediakan oleh Geosparc ).

Joachim Van der Auwera
sumber
Terima kasih, saya belum pernah mendengar tentang Geoma, itu menarik. Meskipun saya perhatikan mereka mengenakan biaya untuk lisensi yang ramah bisnis dan modul pencetakan menggunakan iText yang lagi-lagi berarti Anda harus membayar untuk dibebaskan dari AGPL
MarkJ
0

Yah, kami menggunakan PDFBox (lisensi Apache) dari kode sisi server Java.

Kami membangun permintaan WMS untuk berbagai lapisan, mendapatkan gambar sebagai bitmap dalam memori, dan menatanya menjadi satu bitmap dalam memori tunggal. Menggunakan Java BufferedImageuntuk bitmap dalam memori. Lalu kami render bitmap ke halaman PDF menggunakan PDFBox PDJpeg .

Ini bekerja dengan cukup baik. Satu kesalahan adalah bahwa gambar peta bisa menjadi sedikit buram dalam PDF, karena Anda harus menyandikannya sebagai JPEG untuk menggunakannya dengan PDFBox, dengan kompresi lossy yang tak terhindarkan. Anda dapat memperbaiki ini dengan mengatur kualitas JPEG ke maksimum di konstruktor PDFJpeg, dan dengan meminta gambar pada ukuran besar (misalnya 300 dpi).

Akhirnya kami berencana untuk merilis kode kami sebagai sumber terbuka. Saya akan memposting tautan ketika ini terjadi.

Sekali lagi terima kasih kepada Will, Allan dan semua orang!

MarkJ
sumber