segunda-feira, 8 de julho de 2013

Alterando tipos de extensões de arquivos de exportação do JasperViewer

Esse post foi escrito tão rápido quanto um coice de porco!

 Trata-se de definir algumas extensões de arquivos que o JasperViewer poderá exportar em seu relatório.

O JasperViewer tem a propriedade JRSaveContributor[] (que contém as extensões permitidas na exportação do relatório) que será percorrida, e sua descrição comparada aos elementos do List ALLOWED_FILE_TYPES. Caso não esteja contido, o objeto do JRSaveContributor[] será removido, fazendo com que somente seja exibido as extensões PDF, WORD, XLS, RTF, HTML, CSV ao usuário.
    private final String PDF = "PDF (*.pdf)";

    private final String RTF = "RTF (*.rtf)";

    private final String HTML = "HTML (*.htm, *.html)";

    private final String XLS = "Single sheet XLS (*.xls)";

    private final String CSV = "CSV (*.csv)";

    private final String WORD = "DOCX (*.docx)";

    private final List<String> ALLOWED_FILE_TYPES = Arrays.asList(PDF, WORD, XLS, RTF, HTML, CSV);
    private void setListAllowedFileTypes(JasperViewer viewer) {

        Field jrViewerField;

        try {

            jrViewerField = viewer.getClass().getDeclaredField("viewer");
            jrViewerField.setAccessible(true);

            JRViewer jrViewer = (JRViewer) jrViewerField.get(viewer);

            List<JRSaveContributor> saveOptions = Arrays.asList(jrViewer.getSaveContributors());

            Iterator<JRSaveContributor> it = saveOptions.iterator();

            while (it.hasNext()) {

                JRSaveContributor jsc = it.next();

                if (ALLOWED_FILE_TYPES.contains(jsc.getDescription())) {

                    continue;

                } else {

                    jrViewer.removeSaveContributor(jsc);

                }

            }

        } catch (Exception ex) {

            logger.error(ex.getClass().getName(), ex);

        }

    }

Nenhum comentário:

Postar um comentário