I found a solution that, in my opinion, was just awful, but worked on my case.
Good: after reading the source code for the JasperViewer class, I found a protected field named viewer in this class.
, , , :
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();
}
, , , Jasper Reports 3.7.1. , , - , .