3

お客様は Jasper ビューアを気に入ってくれていますが、問題があります。データをいくつかの異なる形式 (PDF、Excel、CSV、HTML など) にエクスポートしますが、顧客は PDF にのみエクスポートしたいと考えています。

ユーザーがデータをエクスポートするために選択できる唯一の形式が PDF になるように、Jasper Viewer をどのようにカスタマイズできますか?

4

3 に答える 3

5

私の意見ではひどい解決策を見つけましたが、私の場合はうまくいきました。

さて、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 では機能しました。システムの別のバージョンで動作する可能性のある保証はありません。したがって、それが最後のリソースである場合にのみ、このソリューションを使用しないことを強くお勧めします.

于 2010-04-08T12:34:59.377 に答える
3

PDF のみを許可する SaveContributor を設定しないのはなぜですか? 例)JRPdfSaveContributor。

    JRViewer viewer = new JRViewer(jrPrint);
    viewer.setSaveContributors(new JRSaveContributor[] { new JRPdfSaveContributor(Locale.getDefault(), null) });
于 2012-10-31T13:15:44.347 に答える
0

\apache-tomcat-7.0.12\webapps\jasperserver\WEB-INF\flows から viewReportsBean.xml を開きます

ドキュメントの最後までスクロールし続けると、次の行が表示されます

<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> 
于 2011-04-22T04:27:02.763 に答える