Tìm kiếm thành phần nguồn mở để tạo PDF từ WMS trong một ứng dụng web


8

Tôi muốn tạo một tệp PDF từ WMS trong một ứng dụng bản đồ web.

Xin vui lòng bất cứ ai có thể đề nghị một thành phần mạnh mẽ? Tôi muốn nguồn mở miễn phí theo giấy phép tương đối thân thiện với doanh nghiệp (không có GPL, BSD / MIT, v.v. sẽ là lý tưởng, LGPL sẽ ổn).

  • Các lớp WMS của chúng tôi được sản xuất bởi ncWMSUNM MapServer . Chúng tôi cũng sẽ muốn phủ một số lớp từ các nhà cung cấp WMS bên ngoài.
  • EDIT : Chúng tôi đang phát triển ứng dụng JavaScript của riêng mình dựa trên OpenLayers.
  • EDIT : Chúng tôi có một số mã phụ trợ trong Java. Chúng tôi cũng sẽ xem xét PHP hoặc các nền tảng khác để tạo PDF.

MapFish sẽ rất tuyệt nhưng đó là GPL.


1
Máy chủ và máy khách QGIS cung cấp đầu ra PDF có độ phân giải cao song song với WMS nhưng đó cũng là GPL.
underdark

Phần mềm máy chủ nào đang cung cấp dịch vụ WMS?
Allan Adair

@ Allan Tôi đã trả lời trong một chỉnh sửa
MarkJ

2
Tôi nghĩ MapServer hỗ trợ đầu ra PDF ( mapserver.org/output/pdf.html ) và phiên bản mới hơn sử dụng Cairo ( cairographics.org ), được phát hành theo LGPL hoặc MPL.
Allan Adair

@ Allan Điểm tốt. Bạn có thể làm cho nhận xét đó một câu trả lời! Câu hỏi: chúng ta có phải tạo một tệp MAP không? Hiện tại chúng tôi không có tệp bản đồ chứa tất cả các lớp, chúng tôi sẽ lắp ráp chúng trong máy khách bằng OpenLayers. Tôi cho rằng giao diện JavaScript của chúng tôi sẽ gọi lại cho máy chủ, sau đó sẽ thực thi một số MapScript. Chúng tôi cũng sẽ phải tạo một tập tin MAP?
MarkJ

Câu trả lời:


3

Tôi sử dụng CairoPango (cả LGPL) cùng nhau để tạo bản đồ PDF.

Đó là một giải pháp cấp thấp, nhưng Cairo có khả năng vẽ vectơ và xử lý raster tuyệt vời, trong khi Pango là tuyệt vời trong việc sắp chữ. Các kết quả tổng thể là tuyệt vời, nhưng nó đòi hỏi rất nhiều mã hóa. Chẳng hạn, nếu tôi muốn tạo bản đồ bằng đầu ra WMS, tôi xây dựng yêu cầu WMS, yêu cầu hình ảnh và vẽ nó lên khung vẽ PDF bằng Cairo.

Tôi sử dụng các thư viện này thông qua Java-Gnome nhưng có các ràng buộc với cả hai ngôn ngữ.


Nếu bạn xem xét tùy chọn này, bạn cũng có thể tìm đến libharu (bằng C) hoặc các phiên bản cũ hơn của iText (java) (mới hơn có giấy phép AGPL không phù hợp với mục đích của bạn).
johanvdw

1
Để biết ví dụ về các bản đồ được tạo gần như hoàn toàn bằng phương pháp này, vui lòng xem ấn phẩm này . Tệp 2 bổ sung chứa các bản đồ, vốn là vectơ ban đầu nhưng đã được rasterized để giảm kích thước tải xuống.
Sẽ

@johanvdw Quả thực AGPL không phù hợp với mục đích của tôi. Tôi có thể xem xét PDFBox theo giấy phép Apache
MarkJ

@Will Cairo nghe có vẻ thú vị. Máy chủ sản xuất của chúng tôi là Linux nhưng máy phát triển / thử nghiệm của chúng tôi là Windows. Có cách nào để sử dụng Cairo từ Java trên Windows không?
MarkJ

@MarkJ java-gnome không chạy trên Windows một cách đáng tiếc (và đó là GPL) - Tôi chưa tìm thấy giải pháp thay thế. Các ràng buộc Python và Mono chạy trên Windows mặc dù.
Sẽ

3

Còn việc sử dụng http://code.google.com.vn/p/wkhtmltopdf/ thì sao? Nó là lgpl và cho phép bạn chỉ cần tạo pdf từ một mẫu trang web. Chúng tôi sử dụng phương pháp này cùng với django để tự động tạo html trước khi hiển thị nó thành pdf với wkhtml.

Trân trọng

Tim


+1. Mặc dù khó khăn với các vectơ OpenLayers, giải pháp này cho phép bạn tùy chỉnh hoàn toàn trang in. Đặt logo, truyền thuyết, chân trang bất cứ nơi nào bạn muốn giống như trên trang html thông thường, sau đó tạo hình ảnh hoặc pdf từ nó.
denu

+1 cho suy nghĩ bên! Để chắc chắn tôi đã hiểu: bạn sẽ tạo một trang web hiển thị một số lớp bản đồ bằng ứng dụng JavaScript (ví dụ: OpenLayers), sau đó kết xuất nó thành PDF bằng wkhtml?
MarkJ

Xin chào Tim, làm thế nào bạn có được điều này để làm việc? Tôi đã thử một số ví dụ với Lớp mở, nhưng bản đồ không được hiển thị hoặc nó được nén ở bên trái của hộp.
Dennis van Schaik

0

Geomajas có một trình cắm in có thể chuyển đổi bản đồ của bạn thành PDF và cũng là một trình cắm báo cáo (đang thực hiện) có thể được sử dụng để tạo báo cáo bằng cách sử dụng JasperReports có thể bao gồm hình ảnh bản đồ. Cả hai đều là AGPL nhưng có thể yêu cầu giấy phép thân thiện với doanh nghiệp (do Geosparc cung cấp ).


Cảm ơn, tôi đã không nghe nói về Geomajas, điều đó thật thú vị. Mặc dù tôi nhận thấy họ tính phí cho các giấy phép thân thiện với doanh nghiệp và mô-đun in sử dụng iText, điều đó một lần nữa có nghĩa là bạn phải trả tiền để được phát hành từ AGPL
MarkJ

0

Chà, chúng tôi đã sử dụng PDFBox (giấy phép Apache) từ mã phía máy chủ Java.

Chúng tôi xây dựng các yêu cầu WMS cho các lớp khác nhau, lấy hình ảnh dưới dạng bitmap trong bộ nhớ và phủ chúng thành một bitmap trong bộ nhớ. Sử dụng Java BufferedImagecho bitmap trong bộ nhớ. Sau đó, chúng tôi kết xuất bitmap lên trang PDF bằng PDFBox PDJpeg .

Nó hoạt động khá tốt. Một điều khó hiểu là các hình ảnh bản đồ có thể trở nên hơi mờ trong PDF, vì bạn phải mã hóa chúng dưới dạng JPEG để sử dụng chúng với PDFBox, với khả năng nén mất mát không thể tránh khỏi. Bạn có thể cải thiện điều này bằng cách đặt chất lượng JPEG ở mức tối đa trong hàm tạo PDFJpeg và bằng cách yêu cầu hình ảnh ở kích thước lớn (ví dụ 300 dpi).

Cuối cùng, chúng tôi dự định phát hành mã của chúng tôi dưới dạng nguồn mở. Tôi sẽ đăng một liên kết khi điều này xảy ra.

Một lần nữa xin cảm ơn Will, Allan và tất cả mọi người!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.