Весенняя безопасность - JasperReport - PullRequest
0 голосов
/ 21 июня 2020

Я хотел бы получить вашу помощь, если бы это было возможно. Я разрабатываю проект с загрузкой Spring, в котором в рамках проекта я экспортирую некоторые отчеты в PDF с помощью jasperReports. Все работало нормально, пока я не реализовал Spring Security в проекте. С тех пор, когда я нажимаю кнопку, чтобы сгенерировать pdf, генерируется своего рода необъяснимый «визуальный мусор». Никаких ошибок или исключений не происходит, просто PDF-файл не создается, за исключением того, что я называю визуальным мусором. Чтобы проверить, что безопасность Spring была причиной проблемы, импортируйте в проект резервную копию, которую я сделал за день до реализации безопасности Spring, и протестируйте проект, и он отлично работает. Я искал информацию, чтобы решить эту проблему, и до сих пор ничего не нашел, если бы кто-нибудь мог дать мне какую-нибудь подсказку, как ее решить, я был бы очень благодарен. Я включаю изображение того, что создается вместо pdf, а также часть pom и системный код:

Результат того, что должно быть файлом PDF

Часть помпа:

    <!-- COMPILACION DE ARCHIVOS .JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>

    <!-- TRABAJAR CON ARCHIVOS JSON -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
    </dependency> 
    
     <!-- PARA TRABAJAR CON REPORTES JASPER REPORTS -->
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.4.0</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context-support</artifactId>
    </dependency>
    
    <!--  PARA ENVIAR EMAILS  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-mail</artifactId>
    </dependency>

    <!--  PARA LEER ARCHIVOS EXCEL -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.1</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.1</version>
    </dependency>
    
    <!--  SPRING BOOT SECURIRY  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency> 
    

Это метон, который вызывается после нажатия кнопки PDF:

 @GetMapping("/imprimirOTs")
public void imprimirOTs (HttpServletResponse response, HttpServletRequest request) {
/***********************************************************************************/
    //Obtenemos el nombre del Logo de la empresa
    String nombreLogo = comboBoxesService.getLogoReptes();
    
    String rutaRepte = request.getServletContext().getRealPath("/resources/reportes");
    String pathLogo = rutaLogoEmpresa + nombreLogo;
    
    ArrayList<String> listaOTs = new ArrayList<String>();
    listaOTs = arrayIdsOTs;                  //Recupera la lista de idsOTs de la entidad de clase 
    String tipoImpres = arrayIdsOTs.get(0);  //Recupera el tipo de impresion que se ha seleccionado
    arrayIdsOTs.remove(0);                   //Remueve el dato 0 para que la lista solo contenga el listado de IDs
    
    //Seleccionamos el tipo de Impresion que se imprimira
    String nombreReporte;
    if (tipoImpres.equals("unaOTpp")){
        nombreReporte = "OrdenTrabajo1pp.jrxml";  //Una OT por pagina
    } else {
        nombreReporte = "OrdenTrabajo3pp.jrxml";  //Tres OTs por pagina
    }
    
    List<Map<String, Object>> listMapsOTs = ordTrabService.getMapasOrdenesTrabajo(listaOTs);
    String simbMoney = comboBoxesService.getSimboloDeMoneda2();
    
    try {
        InputStream logoRpte = new FileInputStream(pathLogo);
        
        // Compile the Jasper report from .jrxml to .jasper
        JasperReport jasperReport = JasperCompileManager.compileReport(rutaRepte + "/" + nombreReporte);
        JRBeanCollectionDataSource dataSource = new JRBeanCollectionDataSource(listMapsOTs); // Get your data source
        
        Map<String, Object> parameters = new HashMap<>(); // Add parameters
        parameters.put("LogoRpte", logoRpte);
        parameters.put("simbMoney", simbMoney);
        
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dataSource); // Fill the report
        
        OutputStream outputStream = response.getOutputStream();
        JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
        
        logoRpte.close();
        
    } catch (Exception ex) {
        ex.printStackTrace();
        System.out.println("Excepción: " + ex.toString());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...