2010-04-19 16 views
7

Soy nuevo en JasperReports. Puedo crear un documento PDF simple con el origen de datos Javabean. En mi proyecto, he creado dos documentos pdf separados con un origen de datos javabean por separado. Ahora quiero fusionar ambos documentos en un solo documento. ¿Alguien puede decirme cómo combinar ambos documentos en un único documento utilizando JasperReports?¿Cómo combinar dos documentos pdf en un único informe en JasperReports?

Respuesta

1

Puede usar subinformes para esto. No tiene que volver a crear sus informes actuales. Crea un informe maestro, con 0 márgenes. Agregue todos sus informes como subinforme y establezca la condición de que si el origen de datos está disponible para esto, solo imprima este informe. Ahora ponga todos sus orígenes de datos individuales en una fuente de datos de mapa y pase esta fuente de datos al informe maestro. Configura todos los subinformes a la clave en el mapa.

23

por desgracia, la solución es construir un informe secundario y el uso de la fuente de datos 2 diferente o lo que cada vez que utilizó la conexión

pero hay una manera fácil de conseguir más con esta pregunta: D simples no hay nuevos informes .. ... Voilà

bien permite hacerlo

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

bien contamos con más de 2 registros ..lets tomar nuestro primer registro JP1 y JP2 agregar contenido en ella

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); 

Este trabajo como un encanto .. con un par de bucles puede combinar cualquier número de informe junto .. sin crear nuevos informes

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

+0

+1 Solución fácil y elegante, después de que me quedé perplejo con los subinformes haciendo un paneo uno sobre el otro y otras cosas. – Smig

+0

Esta es una buena solución (gracias a Lahiru) ya que tenemos un requisito en el que se deben enviar dos notificaciones de idiomas diferentes a los clientes y los clientes pueden optar por ambos idiomas o un solo idioma. Lo que @lahiru sugirió perfectos se ajusta a nuestra cesta. – Anand

+0

Creo que esta puede ser la solución para el siguiente problema también? Http: //stackoverflow.com/questions/29974890/how-can-i-have-multiple-jrbeancollectiondatasource-in-jasperfillmanager-fillrepo – prime

0

de varias páginas en una sola JasperPrint

Código de ejemplo :

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); 
Cuestiones relacionadas