Как создать динамический отчет, в котором столбцы будут соответствовать ширине страницы?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как создать динамический отчет, в котором столбцы будут соответствовать ширине страницы?

Сообщение Anonymous »

Как сделать так, чтобы в этом динамическом отчете в JasperReports столбцы, которые уже размещены горизонтально, подстраивались под ширину страницы независимо от того, сколько столбцов будет отправлено, поскольку точное количество заранее неизвестно? Идея состоит в том, чтобы он был динамическим, а столбцы отправлялись из внешнего интерфейса для создания отчета.
Важно отметить, что JasperReports не допускает выражения в ширине столбца и разделение информацию в один столбец, используя '|' это нежизнеспособный вариант, так как слишком много информации становится дезорганизованным.
Это источник моего отчета: Это базовый сервис Spring Boot:

Код: Выделить всё

    @RequestMapping(value = "/generate-dynamic-pdf", method = RequestMethod.POST)
public ResponseEntity generateDynamicPdfReport8(@RequestBody Map requestData) {
try {
List data = (List) requestData.get("data");
String nameUserGeneratedReport = (String) requestData.get("username");

if (data == null || data.isEmpty()) {
return ResponseEntity.badRequest().body("No data provided");
}

Map firstRecord = data.get(0);
if (firstRecord.size() > 12) {
return ResponseEntity.badRequest().body("Maximum of 12 columns allowed");
}

// Obtener los nombres de las columnas
List columnNames = firstRecord.keySet().stream()
.map(key -> {
Map map = new HashMap();
map.put("columnName", key);
return map;
})
.collect(Collectors.toList());

// Preparar los parámetros del reporte
Map parameters = new HashMap();
parameters.put("COLUMN_NAMES", columnNames);
parameters.put("DATA_ROWS", data);
parameters.put("nameUserGeneratedReport", nameUserGeneratedReport);
parameters.put("COLUMN_COUNT", columnNames.size());
parameters.put("REPORT_ORIENTATION", "Landscape");

// Cargar y compilar el reporte
ClassPathResource resource = new ClassPathResource("reports/ReportDynamicTable4.jasper");
InputStream inputStream = resource.getInputStream();
JasperReport jasperReport = (JasperReport) JRLoader.loadObject(inputStream);

// Generar el reporte
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, new JREmptyDataSource());

// Exportar a PDF
byte[] pdfBytes = JasperExportManager.exportReportToPdf(jasperPrint);

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_PDF);
headers.setContentDispositionFormData("filename", "dynamic_horizontal_report.pdf");

return new ResponseEntity(pdfBytes, headers, HttpStatus.OK);
} catch (Exception e) {
e.printStackTrace();
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error generating report: " + e.getMessage());
}
}
Я пытался вычислить ширину столбцов, чтобы она динамически подстраивалась под ширину страницы, но мне не удалось этого добиться. Я пытался сделать это с помощью вложенного отчета, но мне не удалось заставить его работать

Подробнее здесь: https://stackoverflow.com/questions/790 ... page-width
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»