サーバーとクライアントの2つの部分からなるアカデミックアプリを使用しています...
クライアント側では、ユーザーはフォームを使用して対話(CRUD)し、サーバーにレポート要求を呼び出します(日帰り販売などのレポート)。
クライアントアプリはRMI要求をサーバーアプリに送信し、サーバーはこのクライアントへのRMI要求(応答)を介してJasperPrintオブジェクトを返します。
クライアントアプリで一度、このJasperPrintはユーザーに表示されるJFrameに追加されます。
...わかった...
今日、新しいレポートを作成する必要がありました。このレポートは特定のフォント(証明書フォントなど)を使用し、このフォントをJVMサーバーマシン(/usr/lib/jvm/jdk-1.7.0/jre/lib/fonts)にインストールしました。 /)のみ...クライアントではありません。
クライアントユーザーがこのレポートを呼び出すと、クライアントアプリはjasperフォントが見つからないという例外をスローします...このフォントを参照します。
JasperPrintをJFrameに追加する場合は、クライアントで使用可能なフォントを使用してみてください。このフォントだけを使用してください。
問題は、このレポートを表示するためにクライアントにこのフォントをインストールする必要がないこと、そしてすべてのアプリでJasperPrintビューをPDFビューに変換しない方法です。
FacadeRMI呼び出しのサンプルコード:
ReportsManager rm = FacadeFactoryLocal.newInstance(ReportsManager.class);
JasperPrint jasperPrint = rm.geraRelatorio(reportFile, parameters);
// ...
JFrame viewer = new JFrame("Report content");
viewer.setPreferredSize(new Dimension(800, 600));
viewer.setLocationRelativeTo(null);
JasperViewer jrViewer = new JasperViewer(print, true);
viewer.getContentPane().add(jrViewer.getContentPane());
new FrameConfig(viewer); // show the frame with validations.
よろしくお願いします。