ジャスパーレポート:それは1つのフォーマットのみでエクスポートすることができるようにJasperViewerをカスタマイズする方法?

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

  •  24-09-2019
  •  | 
  •  

質問

私たちの顧客はジャスパービューアを愛しているが、我々は問題を抱えています。これは、いくつかの異なるフォーマット(PDFなど、エクセル、CSV、HTML、)にデータをエクスポートしますが、私たちの顧客は唯一のPDFにエクスポートしたいと考えています。

私達は私達のユーザーがエクスポートデータに選択することができる唯一のフォーマットがPDFであることを?そうジャスパービューアをカスタマイズすることができますどのように

役に立ちましたか?

解決

私は私の意見ではちょうどひどいが、私の場合で働いている、という解決策を見つけた。

まあ:JasperViewerクラスのソースコードを読んで、私は、そのクラスにビューアという名前の保護されたフィールドを見つけました。

だから、私がしなければならなかったすべては、このようなコードを記述します:

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バージョンで働いていました。それは私は非常にそれがあなたの最後のリソースである場合にのみ、このソリューションを使用する人を思いとどまらせ、システムの他のバージョンでも動作無保証がありません。

他のヒント

なぜ唯一のPDFファイルを許可することをSaveContributorを設定していませんか? E. gを。 JRPdfSaveContributorます。

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

viewReportsBean.xmlを開く\からのapache-tomcatの-7.0.12 \ webappsに\ jasperserver \ WEB-INF \が流れ

あなたは次の行が表示されます文書の最後までスクロールし続ける

<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> 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top