2010-04-19 8 views
7

मैं JasperReports के लिए नया हूँ। मैं जावबीन डेटासोर्स के साथ एक साधारण पीडीएफ दस्तावेज़ बना सकता हूं। मेरी परियोजना में मैंने अलग javabean डेटासोर्स के साथ दो अलग पीडीएफ दस्तावेज बनाया है। अब मैं दोनों दस्तावेज़ों को एक दस्तावेज़ में मर्ज करना चाहता हूं। क्या कोई मुझे बता सकता है कि जैस्पर रीपॉर्ट्स का उपयोग करके दोनों दस्तावेजों को एक दस्तावेज़ में कैसे विलय करना है?कैसे JasperReports में एकल रिपोर्ट में दो पीडीएफ दस्तावेजों विलय करने के लिए?

उत्तर

1

आप इस के लिए subreports उपयोग कर सकते हैं। आपको अपनी वर्तमान रिपोर्ट को फिर से बनाना नहीं है। 0 मार्जिन के साथ, एक मास्टर रिपोर्ट बनाएं। subreport के रूप में इस के लिए अपनी सभी रिपोर्ट जोड़ें और शर्त डाल कि यदि डेटा स्रोत इस के लिए उपलब्ध है, तो ही इस रिपोर्ट मुद्रित करें। अब एक नक्शा डेटा स्रोत में अपने सभी व्यक्तिगत datasources रख दिया और मास्टर रिपोर्ट करने के लिए इस डेटा स्रोत गुजरती हैं। Configute मानचित्र में महत्वपूर्ण करने के लिए सभी subreports।

23

दुर्भाग्य से समाधान एक उप रिपोर्ट बनाने और 2 अलग डेटा स्रोत या जो भी कनेक्शन आप

थे, लेकिन वहाँ एक आसान तरीका यह सवाल के साथ खत्म होने का उपयोग करें: डी सिर्फ सरल कोई भी नई रिपोर्ट .. ... Voilà

ठीक

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

ठीक हम 2 से अधिक रिकॉर्ड ..lets हमारी पहली रिकॉर्ड JP1 लेने के लिए और इसे में

+०१२३५१६४१०६ JP2 सामग्री जोड़ने यह कर देता है
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); 

एक आकर्षण की तरह यह काम .. छोरों की जोड़ी के साथ आप एक साथ .. रिपोर्ट के किसी भी संख्या मर्ज कर सकते हैं नई रिपोर्ट

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

+0

+1 आसान और सुरुचिपूर्ण समाधान, जब मैं एक दूसरे पर पनडुब्बियों के साथ फंस गया और क्या नहीं था। – Smig

+0

यह एक अच्छा समाधान है (धन्यवाद लाहिरू) क्योंकि हमारे पास एक आवश्यकता है जहां ग्राहकों को दो अलग-अलग भाषा अधिसूचनाएं भेजी जानी चाहिए और ग्राहक दोनों या दोनों भाषा चुन सकते हैं। क्या @lahiru सुझाव दिया कि हमारी टोकरी फिट बैठता है। – Anand

+0

मुझे लगता है कि यह नीचे की समस्या के लिए भी समाधान हो सकता है? Http: //stackoverflow.com/questions/29974890/how-can-i-have-multiple-jrbeancollectiondatasource-in-jasperfillmanager-fillrepo – prime

0

JasperPrint

नमूना कोड एक में एकाधिक पृष्ठ बनाने के बिना :

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); 
संबंधित मुद्दे