2011-11-23 55 views
15

Một số ngày trước, sếp của tôi đã hỏi tôi rằng anh ấy muốn hóa đơn trong các tệp PDF từ ứng dụng web ngoài. Cho rằng tất cả mọi người sử dụng JasperReports và iReport cho thiết kế tôi đã thử nó. Ứng dụng web của tôi dựa trên Java + Hibernate và Spring. Lúc đầu Jasper có vẻ tốt và iReport quá. Dù sao tôi đã bị chặn lại bởi hai điều:Tìm kiếm giải pháp thay thế cho JasperReports

  • iReport là điều chậm nhất mà tôi từng thấy trong đời.
  • Nghiêm túc hơn, tôi có một số loại đậu có phân cấp lớp và rất phức tạp để xử lý điều này trong Jasper. Tất cả mọi người trong văn phòng của tôi đều sử dụng Jasper với các truy vấn SQL, và theo cách đó, nó là một công cụ dễ dàng và tiện dụng, nhưng tôi đã dành cả ngày cố gắng lập bản đồ cho các báo cáo và subreports và rất ít công việc.

Tôi đã xem DynamicJasper, nhưng có vẻ như tôi không thể thiết kế báo cáo với nó. Bạn nghĩ sao? Có sử dụng lựa chọn thay thế dễ dàng hơn không?

+0

Bạn đang tìm kiếm giải pháp thay thế sẽ hoạt động cùng với Java + Hibernate và Spring? –

+0

API DynamicJasper là "trình bao bọc" cho JasperReports API –

+1

Về hiệu suất iReport, có một số loại lỗi trong 4.1.x và 4 gần đây.5 bản phát hành. Xem bài đăng trên diễn đàn này để biết thêm thông tin: http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=94781#95291. Xóa/đặt lại classpath tăng hiệu suất của iReport theo thứ tự độ lớn đối với tôi. – kaliatech

Trả lời

2

Là một giải pháp thay thế cho iReport, bạn có thể thử thiết kế JasperWave cho JasperReports. Để giải quyết vấn đề thứ hai tại sao không viết một số mã java trợ giúp dịch cấu trúc đậu để báo cáo cấu trúc? Trong mọi trường hợp, không phải lúc nào cũng dễ dàng lập bản đồ các đối tượng java với một loại cấu trúc phẳng nào đó. Tạo một số giao diện java sẽ ẩn sự phức tạp của cấu trúc đậu cơ bản. Không chắc chắn rằng vấn đề thứ hai là lý do để tìm giải pháp báo cáo thay thế.

4

Nếu thời gian là bản chất (như thường là trường hợp sếp của bạn đưa cho bạn điều gì đó) Tôi khuyên bạn nên kiểm tra iText (trang web chính là here). Nó rất, rất đơn giản để tìm hiểu (bạn có thể thiết lập, chạy và tạo các ví dụ "Hello, PDF!" Đơn giản sau 20 phút) và có thể xuất mọi thứ vào PDF: bảng, danh sách, biểu đồ, hình ảnh, siêu văn bản, v.v.

Bằng cách nhập học của riêng tôi, JasperReports triển khai JRBeanCollectionDataSource là giải pháp lâu dài, linh hoạt và linh hoạt hơn cho bạn. Nhưng nếu bạn cần một thư viện nhanh chóng-n-bẩn để chỉ sản xuất PDF, thời hạn hiện ra lờ mờ được vẽ cao, tôi sẽ tải xuống JAR iText và có nó.

Trang web được tải với các ví dụ mã thực tế cho mọi thứ bạn muốn thực hiện.

Không giống như JasperReports, iText không phải là trình tạo báo cáo. Nó chỉ là một máy phát PDF (mà, từ những gì tôi có thể nói trong câu hỏi của bạn, âm thanh giống như tất cả những gì bạn cần). Vì vậy, đối với bất kỳ Bean cụ thể, bạn sẽ chỉ cần chọn các thuộc tính mà bạn muốn xuất khẩu sang hóa đơn PDF, và sử dụng Chunk, Paragraph vv lớp học để gắn nó vào phần tài liệu khi bạn cần:

// Your POJO/Bean/VO 
Employee oEmp = new Employee(); 

Document oInvoicePdf = new Document(); 
PdfWriter.getInstance(document, new FileOutputStream("/invoices/2011/Invoice201.pdf")); 
document.open(); 
document.add(new Chunk("Employee's name is : " + oEmp.getName())); 
document.close(); 

Thậm chí nếu đây không phải là những gì bạn đang tìm kiếm, ở tất cả các chi phí Tôi muốn giới thiệu bạn chỉ đạo rõ ràng của Apache PdfBox. Theo ý kiến ​​khiêm nhường của tôi, nó là tà ác thuần khiết và sẽ chỉ phá vỡ trái tim bạn.

Hy vọng điều này sẽ giúp ích và chúc bạn may mắn!

+0

Tôi gặp khó khăn trong việc tạo PDFBox thứ hai. Đó là cấu trúc dữ liệu nội bộ dường như được ridden với rò rỉ bộ nhớ và không thực sự được thiết kế để làm việc trên các tài liệu lớn. Tôi đã kết thúc cần phải đóng và mở lại nguồn pdf chỉ để xóa tất cả các dữ liệu không cần thiết mà nó giữ xung quanh. Tôi thực sự hy vọng họ sẽ giải quyết những vấn đề này. –

+0

Có bản cập nhật mới nào về điều này không? – powder366

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