2009-11-06 39 views
8

Tôi muốn tạo trang web báo cáo động bằng JSP. Về cơ bản, nó phải chứa các phần sau:JasperBáo cáo đầu ra html và pdf

  1. Bộ lọc: Người dùng có thể chỉ định điều kiện bộ lọc và nhấn nút bộ lọc.
  2. Kết quả đầu ra HTML: Kết quả của bộ lọc có thể được xem tại đây. Đó là một trang html lớn (hoặc một vài trang nếu quá lớn). Nó có thể chứa các liên kết đến các phần khác của hệ thống.
  3. Đầu ra PDF: Người dùng có thể lưu phiên bản pdf của báo cáo cho mục đích in hoặc lưu trữ.

Thay vì tự mình thực hiện mọi thứ, tôi muốn sử dụng thư viện báo cáo java, vì vậy tôi đã tạo báo cáo của mình bằng cách sử dụng JasperReports. Đầu ra pdf thực sự tốt đẹp, nhưng xuất khẩu html của báo cáo không phù hợp với mục đích của tôi.

Xuất khẩu html của JasperReport tạo tệp html có nhiều mã được mã hóa và các tùy chọn cấu hình khá ngẫu nhiên. Ví dụ, nó tạo ra một bảng với nền trắng theo mặc định (<table style="... bgcolor="white" ... ">) có thể được tắt bằng cách sử dụng tùy chọn IS_WHITE_PAGE_BACKGROUND, mặt khác cellpadding="0" cellspacing="0" border="0" được hardwired trong thẻ table. Nó cũng là lạ (và làm cho phong cách css khó khăn) mà thay vì các lớp span các tập tin html chứa <span style="font-family: sansserif; color: #000000; font-size: 10.0px;"> cho tất cả các lĩnh vực của tôi. Tất nhiên tôi có thể thực hiện đầu ra html bằng JSP, nhưng nó có nghĩa là tôi phải thiết kế đầu ra hai lần (một lần trong jrxml cho JasperReports, một lần trong JSP) và tôi phải thực hiện lại các chức năng báo cáo (như tính tổng phụ, tổng tính toán, nhóm ...) theo nguyên tắc DRY.

Thực tiễn tốt nhất để thực hiện điều này là gì? Có thể tạo xuất HTML tốt hơn bằng JasperReport không?

Trả lời

12

Việc thay đổi đầu ra HTML của JasperReport không dễ dàng. Dưới đây là một trích dẫn cũ về việc tại sao:

... định dạng tài liệu như HTML hoặc XLS, không hỗ trợ định vị tuyệt đối của văn bản và các yếu tố đồ họa. Nội dung của các tài liệu này được sắp xếp trong một cấu trúc lưới hoặc bảng. Của nhiên, một số có thể lập luận rằng tuyệt đối định vị các phần tử trong HTML là nhờ khả năng CSS, nhưng bạn có thể chắc chắn rằng các tiêu chuẩn CSS chức năng là xa là thực hiện trong tất cả các trình duyệt hoặc rằng cùng một tài liệu HTML sẽ không trông giống như ở mọi nơi.

Đây là lý do tại sao JasperReports^built-in xuất khẩu sản xuất HTML, XLS hoặc các tài liệu CSV sử dụng một thuật toán đặc biệt để sắp xếp các yếu tố có mặt trên một số tài liệu trang trong một số loại lưới. Khi báo cáo thiết kế rất phức tạp hoặc đông kết, đi từ tuyệt đối vị vào lưới hoặc các bảng bố trí sản xuất bàn rất phức tạp với nhiều hàng và cột không sử dụng, để làm cho nó cho không gian trống giữa các yếu tố hoặc sự liên kết đặc biệt của họ .

source

Như đã đề cập nó cũ nhưng như xa như tôi có thể nói nó vẫn còn chính xác.

Danh sách những thứ bạn có thể kiểm soát đối với nhà xuất khẩu HTML là rất hạn chế:

net.sf.jasperreports.export.html.frames.as.nested.tables 
net.sf.jasperreports.export.html.remove.emtpy.space.between.rows 
net.sf.jasperreports.export.html.size.unit 
net.sf.jasperreports.export.html.using.images.to.align 
net.sf.jasperreports.export.html.white.page.background 
net.sf.jasperreports.export.html.wrap.break.word 
net.sf.jasperreports.export.{format}.exclude.origin.{suffix}.{arbitrary_name} 
net.sf.jasperreports.export.{format}.exclude.origin.keep.first.{suffix}.{arbitrary_name} 

documentation here

Tôi đã ở lại đi từ HTML và chỉ sử dụng PDF, Excel và CSV trừ khi khách hàng yêu cầu HTML. Nếu bạn phải sử dụng HTML, bạn có thể xác định biểu định kiểu để làm việc với trang web của mình và sử dụng jQuery để xóa tất cả các kiểu nội tuyến để biểu định kiểu của bạn thay đổi. Một cái gì đó như:

$(document).ready(function() { 
    $('span').removeAttr('style'); 
}); 
+1

Tôi đã xem qua bài đăng này hôm nay, tôi đang sử dụng html và tôi cần phải loại bỏ khoảng này được tạo. Như bạn đã đề cập trong câu trả lời của bạn, tôi hiểu bằng cách sử dụng jQuery. Câu hỏi của tôi là nơi để viết mã này và cách tích hợp nó vào báo cáo của tôi? Xin vui lòng hướng dẫn cho tôi –

Các vấn đề liên quan