Мы генерируем наши отчеты с использованием JasperReports 5.6.1 и разрешаем экспортировать один и тот же шаблон в PDF или Powerpoint. При работе на локальном компьютере загруженный файл PDF и PPTX работает отлично. Когда мы развертываем наши серверы, PDF работает отлично, но файлы PPTX не могут быть открыты. Когда мы запускаем локально, он развертывается в tomcat, но при развертывании на сервере он работает в Websphere.Ошибка загрузки отчета, экспортированного в PPTX при развертывании на сервере
Вещи, которые я принимала, и заметил:
- Я проверил журналы, и нет никаких исключений или что-нибудь, чтобы поднять любые брови.
- Загруженный файл обычно немного больше, чем тот, который мы получаем при локальном запуске.
- Если я изменил расширение файлов на zip и разархивировал их. Структура файла и имена файлов одинаковы, а файлы фактически имеют одинаковый размер файла. Содержимое, по-видимому, отличается только в именах объектов, найденных на каждом слайде.
- думаю, что это может быть проблема с файлами типа
x
, которые я тоже пытался экспортировать в xlsx, просто чтобы узнать, что произойдет, и он отлично работает с тем же шаблоном. - Я добавил статический файл pptx, который был хорошо известен и может загрузить его без проблем с сервера. Я сделал это, чтобы попытаться устранить конфигурацию сервера из проблемы, и почувствовал, что это сработало, я предполагаю, что это что-то с моим кодом, просто не уверен, что.
Вот код, где мы пишем ответ:
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();
Я кончатся идеи по устранению неполадок, и, не будучи в состоянии воспроизвести его на месте, я нахожу, что трудно диагностировать ,
У кого-нибудь есть решение этой проблемы? Мы боремся с тем же вопросом. Может ли кто-нибудь помочь в этом? –
Настройки класса? Такая же версия локальной и серверной Java? Такая же версия библиотеки JasperReports? Все зависимые библиотеки установлены? Те же версии? Вход в систему для проверки дерева решений? (Кроме того, для любви будущих сопровождающих, пожалуйста, удалите повторяющийся код ...) –