Jasper Report: как настроить JasperViewer, чтобы он мог экспортировать только в одном формате? - PullRequest
3 голосов
/ 06 апреля 2010

наш клиент любит Jasper Viewer, но у нас есть проблема. Он экспортирует данные в несколько различных форматов (PDF, Excel, CSV, HTML и т. Д.), Но наш клиент хочет экспортировать только в PDF.

Как мы можем настроить Jasper Viewer таким образом, чтобы единственным форматом, который наши пользователи могли выбрать для экспорта данных, был PDF?

Ответы [ 3 ]

5 голосов
/ 08 апреля 2010

Я нашел решение, которое, на мой взгляд, просто ужасно, но сработало в моем случае.

Хорошо: читая исходный код класса JasperViewer, я обнаружил защищенное поле с именем viewer для этого класса.

Итак, все, что мне нужно было сделать, это написать такой код:

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();
            } 

Это не красивое решение, но, по крайней мере, оно работало с версией 3.7.1 Jasper Reports.,У него НЕТ ГАРАНТИИ, которая может работать с другими версиями системы, поэтому я настоятельно рекомендую всем использовать это решение, только если это ваш последний ресурс.

3 голосов
/ 31 октября 2012

Почему бы не установить SaveContributor, который позволяет только PDF-файлы?НапримерJRPdfSaveContributor.

    JRViewer viewer = new JRViewer(jrPrint);
    viewer.setSaveContributors(new JRSaveContributor[] { new JRPdfSaveContributor(Locale.getDefault(), null) });
0 голосов
/ 22 апреля 2011

открыть viewReportsBean.xml из \ apache-tomcat-7.0.12 \ webapps \ jasperserver \ WEB-INF \ Flow

продолжайте прокручивать вниз до конца документа, вы увидите следующие строки

<entry key="pdf" value-ref="pdfExporterConfiguration"/>
     <entry key="xls" value-ref="xlsExporterConfiguration"/> 
    <entry key="csv" value-ref="csvExporterConfiguration"/>
    <entry key="docx" value-ref="docxExporterConfiguration"/>
    <entry key="rtf" value-ref="rtfExporterConfiguration"/>
    <entry key="swf" value-ref="swfExporterConfiguration"/>
    <entry key="odt" value-ref="odtExporterConfiguration"/>
    <entry key="ods" value-ref="odsExporterConfiguration"/>
    <entry key="xlsx" value-ref="xlsxExporterConfiguration"/> 
    <!-- entry key="txt" value-ref="txtExporterConfiguration"/
</util:map> 

просто добавьте комментарий, чтобы отключить их, и все готово! счастливое кодирование ...

<entry key="pdf" value-ref="pdfExporterConfiguration"/>
    <!-- <entry key="xls" value-ref="xlsExporterConfiguration"/> -->
    <!--<entry key="csv" value-ref="csvExporterConfiguration"/> -->
    <!--<entry key="docx" value-ref="docxExporterConfiguration"/> -->
    <!--<entry key="rtf" value-ref="rtfExporterConfiguration"/> -->
    <!--<entry key="swf" value-ref="swfExporterConfiguration"/> -->
    <!--<entry key="odt" value-ref="odtExporterConfiguration"/> -->
    <!--<entry key="ods" value-ref="odsExporterConfiguration"/> -->
    <!--<entry key="xlsx" value-ref="xlsxExporterConfiguration"/> -->
    <!-- entry key="txt" value-ref="txtExporterConfiguration"/-->
</util:map> 
...