Jasper Report: come personalizzare JasperViewer in modo che potesse esportare solo in un formato?

StackOverflow https://stackoverflow.com/questions/2586579

  •  24-09-2019
  •  | 
  •  

Domanda

il nostro cliente è amare lo spettatore Jasper, ma abbiamo un problema. Esporta i dati di diversi formati (PDF, Excel, CSV, HTML, ecc), ma il nostro cliente vuole solo l'esportazione in PDF.

Come possiamo personalizzare il Visualizzatore Jasper in modo che l'unico formato che i nostri utenti possono scegliere di esportare i dati è PDF?

È stato utile?

Soluzione

ho trovato una soluzione che, a mio parere, è semplicemente terribile, ma lavorato sul mio caso.

Bene: la lettura del codice sorgente della classe JasperViewer, ho trovato un campo di protezione denominato spettatore in quella classe

.

Quindi, tutto quello che dovevo fare era scrivere un codice come questo:

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

Non è una bella soluzione, ma almeno funzionava con la versione 3.7.1 di jasperreports. E hanno NESSUNA GARANZIA che può funzionare con altro del sistema, in modo da scoraggiare vivamente a chiunque di utilizzare questa soluzione, solo se questo è il tuo ultimo risorsa.

Altri suggerimenti

Perché non impostare un SaveContributor che consente solo i file PDF? Per esempio. il JRPdfSaveContributor.

    JRViewer viewer = new JRViewer(jrPrint);
    viewer.setSaveContributors(new JRSaveContributor[] { new JRPdfSaveContributor(Locale.getDefault(), null) });

aprire viewReportsBean.xml da \ apache-tomcat-7.0.12 \ webapps \ JasperServer \ WEB-INF \ scorre

continuare a scorrere fino alla fine del documento vedrete le seguenti linee

<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> 

è sufficiente aggiungere un tag di commento per disabilitarle e il gioco è fatto !! felice di codifica ...

<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> 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top