2010-04-06 7 views

Répondre

5

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.

0

ouvrir jusqu'à viewReportsBean.xml de \ apache-tomcat-7.0.12 \ webapps \ JasperServer \ WEB-INF \ flux

garder le défilement vers le bas à la fin du document, vous verrez les lignes suivantes

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

Ajoutez simplement un tag de commentaire pour les désactiver et vous avez terminé !! codage heureux ...

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

Cette solution fonctionne uniquement pour 'JasperReports Server' –

3

Pourquoi ne pas définir un SaveContributor qui autorise uniquement les PDF? Par exemple. le JRPdfSaveContributor.

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