Stiamo generando i nostri rapporti utilizzando JasperReports 5.6.1 e consentendo di esportare lo stesso modello in PDF o Powerpoint. Quando si esegue localmente, i file PDF e PPTX scaricati funzionano perfettamente. Quando distribuiamo sui nostri server, il PDF funziona bene, ma i file PPTX non possono essere aperti. Quando eseguiamo localmente, viene distribuito su tomcat, ma quando viene distribuito sul server è in esecuzione su Websphere.Problema di download del rapporto esportato su PPTX quando installato sul server
cose che ho provato e ho notato:
- ho controllato i ceppi, e non ci sono eccezioni o nulla per sollevare le sopracciglia.
- Il file scaricato è in genere leggermente più grande di quello che otteniamo quando eseguiamo localmente.
- Se ho modificato l'estensione dei file in zip e li ho archiviati. La struttura del file e i nomi dei file sono gli stessi, insieme ai file che hanno le stesse dimensioni del file. I contenuti sembrano essere solo diversi nei nomi degli oggetti trovati in ogni diapositiva.
- pensando che potrebbe essere un problema con i file di tipo
x
Ho provato anche a esportare in xlsx, solo per vedere cosa sarebbe successo e funziona perfettamente con lo stesso modello. - Ho aggiunto un file pptx statico che era noto e che può essere scaricato senza problemi dal server. L'ho fatto per cercare di eliminare una configurazione del server dal problema, e ho percepito che funzionava, presumo che sia qualcosa con il mio codice, ma non sono sicuro di cosa.
Qui è il codice per cui scriviamo la risposta:
if ("xlsx".equals(type)) {
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".xlsx");
} else if ("pptx".equals(type)) {
response.setContentType("application/vnd.openxmlformats-officedocument.presentationml.presentation");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pptx");
response.setCharacterEncoding("UTF-8");
} else {
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "attachment; filename=" + filename + ".pdf");
}
try (final ByteArrayOutputStream reportResult = reportsService.generateReport(
getDeal(userId, dealId, sessionStore),
getScenarioModel(userId, dealId, scenarioId, sessionStore), reportId, type)) {
configureResponse(response, type, reportResult, dealId + "-" + scenarioId);
// Write to http response
reportResult.writeTo(response.getOutputStream());
}
response.flushBuffer();
ho esaurito le idee sui passi di risoluzione dei problemi, e senza essere in grado di riprodurre a livello locale, mi sto trovando difficile da diagnosticare .
Qualcuno ha avuto la soluzione per questo problema? Stiamo lottando per lo stesso problema. Qualcuno può aiutare su questo? –
Impostazioni percorso classe? La stessa versione di Java locale e lato server? Stessa versione della libreria JasperReports? Tutte le librerie dipendenti installate? Stesse versioni? Registrazione per testare l'albero decisionale? (Inoltre, per amore dei futuri manutentori, ti preghiamo di eliminare il codice duplicato ...) –