Я хотел бы получить вашу помощь, если бы это было возможно. Я разрабатываю проект с загрузкой 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());
}
}