Generación de paisaje y retrato en un solo informe utilizando la API DynamicJasper

Tengo diferentes módulos en mi aplicación. Cada módulo se puede exportar en Excel, Word y PDF. El formato del informe es horizontal o vertical . Ahora necesito compilar todos esos informes y exportarlos como uno solo. Pero me enfrento a un problema que al exportar, DynamicJasper se muestra en un solo formato, es decir, horizontal o vertical .

¿Cómo puedo mostrar mi informe usando ambos formatos en un solo informe usando la API DynamicJasper ?

Respuesta 1

Puede crear un Informe maestro y agregarle informes secundarios, este es un ejemplo del informe maestro y cómo agregar Subreports:

public DynamicReport buildDynamicReport() throws ReportDocumentGenerationException {
  DynamicReportBuilder drb = new DynamicReportBuilder();
  drb.setDetailHeight(detailHeight)     
  .setMargins(properties.getReportMargins().getTopMargin(), properties.getReportMargins().getBottomMargin(), properties.getReportMargins().getLeftMargin(), properties.getReportMargins().getRightMargin())     
  .setDefaultStyles(null, null, null, getSpoolStyle(SpoolRow.PLAIN_ATTRIBUTE))    
  .setPageSizeAndOrientation(new Page(**/*Your document dimensions and orientation*/**)
  .setColumnsPerPage(1);
   for(ReportDocumentInformationPage page: reportInformation.getPaginas()){
            drb.addConcatenatedReport(getPageSubReport(page.getPageNumber()),new ClassicLayoutManager(),"DS"+page.getPageNumber().toString(),DJConstants.DATA_SOURCE_ORIGIN_PARAMETER, DJConstants.DATA_SOURCE_TYPE_JRDATASOURCE,!page.getPageNumber().equals(1));
            params.put("DS"+page.getPageNumber().toString(), getReportJRDataSource(page.getPageNumber())  );
        }
        drb.setUseFullPageWidth(true);
        DynamicReport dr = drb.build();
        return dr;
    }

Este es un ejemplo sobre cómo crear esos subinformes:

*private DynamicReport getPageSubReport(int i) throws ReportDocumentGenerationException {
        try{
            DynamicReportBuilder drb = new DynamicReportBuilder();
            drb.setDetailHeight(detailHeight)
            .setReportName("Reporte"+i)
            .setMargins(properties.getReportMargins().getTopMargin(), properties.getReportMargins().getBottomMargin(), properties.getReportMargins().getLeftMargin(), properties.getReportMargins().getRightMargin())
            .setDefaultStyles(null, null, null, getSpoolStyle(SpoolRow.PLAIN_ATTRIBUTE))    
            .setPageSizeAndOrientation(new Page(**/*Your specific Page dimensions and orientation***/)
            .setColumnsPerPage(1);

            AbstractColumn spoolColumn = ColumnBuilder.getNew()     
            .setColumnProperty("value", String.class.getName())     
            .setTitle(null)     
            .setWidth(150)
            .build();       
            spoolColumn.setConditionalStyles(getSpoolConditionalStyle());

            drb.addColumn(spoolColumn);
            drb.setUseFullPageWidth(true);
            drb.addField("attributes", String.class.getName());
            DynamicReport dr = drb.build();
            return dr;
        }catch(ColumnBuilderException cbe){
            cbe.printStackTrace();
            throw new ReportDocumentGenerationException("No se pudo definir correctamente la columna del reporte para la pagina "+i);
        }catch(Exception e){
            e.printStackTrace();
            throw new ReportDocumentGenerationException("No se pudo generar la pagina "+i+" del reporte");
        }
    }*

Espero eso ayude.

Respuesta: 2

amigos, no sé cómo obtener las canciones restantes y la duración total del reproductor multimedia. En mi código, quiero obtener la duración total de las canciones y la duración restante y mostrarlas en la vista de texto con el tiempo adecuado ...

No hay backend de estado de RocksDB: el estado de difusión se mantiene en memoria en tiempo de ejecución y el aprovisionamiento de memoria se debe realizar en consecuencia. Esto es válido para todos los estados del operador. arriba es del sitio web oficial de flink. ...

Este error solo ocurre cuando asigno valores a una matrizLista después de que se haya instanciado. Este es el error Esto solo ocurre cuando el código es así: String line = scanner.nextLine (); línea = ...

Tengo una serie de movimientos para hacer un cubo de rubik, es decir: String [] clockwiseMoves = new String [6]; por lo que los movimientos se denotan como F (frente), R (derecha), U (arriba), L (izquierda), B (atrás), D (abajo) (por ejemplo, cuando ...