2013-07-01 3 views
0

Я использую JasperReport для генерации PDF. Теперь я использую скомпилированный файл .jasper, но я хочу, чтобы backup в случае ошибки позволил Jasper перекомпилировать исходный файл JRXML. Как я могу это сделать? Это лучшая практика?Скомпилировать файл JasperReport

Это мой код:

InputStream reportC1 = ReportService.class.getResourceAsStream(JASPER_IN_PACKAGE); 
bytes = JasperRunManager.runReportToPdf(reportC1, params, new JRBeanCollectionDataSource(records)); 
PdfReader doc = new PdfReader(bytes); 

Где JASPER_IN_PACKAGE константа для .jasper файла.

ответ

2

Вы можете легко собрать .jrxml файлы с

JasperCompileManager.compileReportToFile(sourceFile, targetFile); 

где sourceFile является File к вашему .jrxml, targetFile является в File к вашему чтобы быть создан .jasper файл.

И для «лучшей практики»: я всегда разворачиваю только файлы .jrxml и компилирую их, если соответствующий файл .jasper старше, чем файл .jrxml. Это позволяет мне легко редактировать исходные файлы, не компилируя их локально. И это ИМХО также лучшая практика, потому что никогда не следует совершать что-либо, что может быть реконструировано, особенно не бинарный контент.

+0

Возможно ли получить непосредственно InputStream для сохранения файла (например, если он считывается из ресурса внутри пакета)? – Tobia

+0

Да, вы можете напрямую использовать «InputStream» в качестве источника, и вам также не нужно сохранять скомпилированный результат. Просто проверьте методы в [JasperCompileManager] (http://jasperreports.sourceforge.net/api/net/sf/jasperreports/engine/JasperCompileManager.html) –

Смежные вопросы