J'ai trouvé une solution qui, à mon avis, est tout simplement terrible mais qui a fonctionné sur mon cas. Bien: en lisant le code source de la classe JasperViewer, j'ai trouvé un champ protégé nommé viewer sur cette classe.
Alors, tout ce que je devais faire était d'écrire un code comme ceci:
Field jrViewerField;
try {
jrViewerField = viewer.getClass().getDeclaredField("viewer");
jrViewerField.setAccessible(true);
JRViewer jrViewer = (JRViewer) jrViewerField.get(viewer);
List<JRSaveContributor> savers = new ArrayList<JRSaveContributor>();
for (JRSaveContributor sc : jrViewer.getSaveContributors()) {
savers.add(sc);
}
for (JRSaveContributor sc : savers) {
if (! sc.getClass().getName().toLowerCase().contains("pdf")) {
jrViewer.removeSaveContributor(sc);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
Ce n'est pas une belle solution, mais au moins il a travaillé avec la 3.7.1 version de JasperReports. Il n'y a AUCUNE GARANTIE qui peut fonctionner avec une autre version du système, donc je décourage fortement quiconque d'utiliser cette solution, seulement si c'est votre dernière ressource.
Cette solution fonctionne uniquement pour 'JasperReports Server' –