2010-04-19 34 views
7

Tôi mới sử dụng JasperReports. Tôi có thể tạo một tài liệu PDF đơn giản với nguồn dữ liệu Javabean. Trong dự án của tôi, tôi đã tạo ra hai tài liệu pdf riêng biệt với nguồn dữ liệu javabean riêng biệt. Bây giờ tôi muốn hợp nhất cả hai tài liệu vào một tài liệu. Bất cứ ai có thể cho tôi biết làm thế nào để hợp nhất cả hai tài liệu vào tài liệu duy nhất bằng cách sử dụng JasperReports?Làm cách nào để hợp nhất hai tài liệu pdf vào một báo cáo trong JasperReport?

Trả lời

1

Bạn có thể sử dụng subreports cho việc này. Bạn không phải tạo lại các báo cáo hiện tại của mình. Tạo báo cáo chính, với 0 lề. Thêm tất cả các báo cáo của bạn vào đây dưới dạng subreport và đặt điều kiện nếu nguồn dữ liệu có sẵn cho điều này, chỉ sau đó in báo cáo này. Bây giờ, hãy đặt tất cả các nguồn dữ liệu cá nhân của bạn vào một nguồn dữ liệu bản đồ và chuyển nguồn dữ liệu này để báo cáo chính. Định cấu hình tất cả các subreports thành khóa trong bản đồ.

23

tiếc là giải pháp là xây dựng một báo cáo tiểu và sử dụng DataSource khác nhau 2 hay bất cứ những kết nối mà bạn sử dụng

nhưng có một cách dễ dàng để vượt qua với câu hỏi này: D chỉ đơn giản không có báo cáo mới .. ... Voila

ok cho phép làm điều đó

JasperPrint jp1 = JasperFillManager.fillReport(url.openStream(), parameters, 
        new JRBeanCollectionDataSource(inspBean)); 
JasperPrint jp2 = JasperFillManager.fillReport(url.openStream(), parameters, 
        new JRBeanCollectionDataSource(inspBean)); 

ok chúng tôi có hơn 2 hồ sơ ..lets mất JP1 kỷ lục đầu tiên của chúng tôi và thêm nội dung jp2 vào nó

List pages = jp2 .getPages(); 
for (int j = 0; j < pages.size(); j++) { 
    JRPrintPage object = (JRPrintPage)pages.get(j); 
    jp1.addPage(object); 

} 
JasperViewer.viewReport(jp1,false); 

này làm việc như một nét duyên dáng .. với vài vòng bạn có thể nhập bất kỳ số lượng báo cáo lại với nhau .. mà không cần tạo báo cáo mới

http://lnhomez.blogspot.com/2011/11/merge-multiple-jasper-reports-in-to.html

+0

+1 Giải pháp dễ dàng và thanh lịch, sau khi tôi bị bối rối với subreports panning trên nhau và không có gì. – Smig

+0

Đây là một giải pháp tốt đẹp (Cảm ơn Lahiru) vì chúng tôi có yêu cầu khi hai thông báo ngôn ngữ khác nhau được gửi đến khách hàng và khách hàng có thể chọn cả ngôn ngữ đơn hoặc cả hai ngôn ngữ. Những gì @lahiru đề xuất hoàn hảo phù hợp với giỏ của chúng tôi. – Anand

+0

Tôi nghĩ rằng đây có thể là giải pháp cho vấn đề dưới đây? Http: //stackoverflow.com/questions/29974890/how-can-i-have-multiple-jrbeancollectiondatasource-in-jasperfillmanager-fillrepo – prime

0

Nhiều trang trong một JasperPrint

Mẫu Mã :

DefaultTableModel dtm = new DefaultTableModel(new Object[0][3], new String[]{"Id","Name","Family"}); 
String[] fields= new String[3];  
boolean firstFlag=true; 
JasperPrint jp1 =null; 
JasperPrint jp2 =null; 
for (int i=0 ; i<=pagesCount ; i++) 
{ 
    fields[0]= "id"; 
    fields[1]= "name"; 
    fields[2]= "family"; 
    dtm.insertRow(0, fields); 
    try 
    { 
     Map<String, Object> params = new HashMap<String, Object>();     
     if (firstFlag) 
     { 
     jp1 = JasperFillManager.fillReport(getClass().getResourceAsStream(reportsource), params, new JRTableModelDataSource(dtm));     
     firstFlag=false;        
     }else 
     { 
     jp2 = JasperFillManager.fillReport(getClass().getResourceAsStream(reportsource), params, new JRTableModelDataSource(dtm)); 
     jp1.addPage(jp2.getPages().get(0)); 
     }  
    }catch (Exception e) 
    { 
     System.out.println(e.fillInStackTrace().getMessage()); 
    } 
} 
JasperViewer.viewReport(jp1,false); 
Các vấn đề liên quan