2012年5月28日月曜日

【SVF】SVF for PDFをC#で利用するならラッパー的なクラスを作るのが吉

ウィングアークさんが販売している(開発元はこっち)帳票作成ツール「SVF for PDF」を使った開発を行ったので、得たこと、知ったこと、Tipsなどを順次公開していきます。

対象読者

このシリーズ(シリーズ化するぞ!という気合を込めて)は、以下のような方々に少しでも役立てば…と願いつつ、時間があるときに少しずつ書いていきます。
  • C#、ASP.NET MVCについて基本的な知識がある方
  • SVFマニュアルのJavaサンプルコードは理解できたけど、さぁC#でどう作ろう?という方
  • SVFの技術情報はWEB検索してもほとんど出てこなくて、毎回サポートに問い合わせないとダメだから面倒!という方

開発・実行環境

WEBサーバーOS Windows Server 2008
WEBサーバー IIS 7.5
APフレームワーク ASP.NET MVC 3
帳票サーバーOS Cent OS 5.6
帳票サーバーJVM Sun Java SE 6
SVF SVF for PDF 9
IDE Visual Studio 2010
※当然DBもありますが、SVFとDBが直接触れることがないので(DataTableクラスとかを対象にするので)割愛。


C#でSVFを利用するならラッパークラスを作れ

C#で SVF を利用するには、(当然ながら)SVFのDLLを参照設定してやります。
で、ここに含まれるAPIをC#から直接呼んでもいいんですが、厄介なのは、APIの各関数が終了状態を戻り値として返してくるってところ。
せっかく素敵な例外機構を持っている言語で利用するのであれば、やっぱり呼出元でちまちま戻り値判定するよりは、サクっと例外処理でまとめてしまいたいですよね。

というわけで、API側でエラーになった場合は例外をスローする、というラッパークラスを用意しておくと便利です。

また、関数によっては「エラー」コードと「警告レベル」のコードを返してくるものもあるので、例えば「警告レベルのものは無視しておk」みたいな設定もラッパークラスに対して行えるようにしておくと、さらに便利ですよね。ね?

さらに、DBから取得したデータを保持させているDataTableオブジェクトをポイっと渡せばルールに従ってズバーっと出力してくれるようなメソッドがあると嬉しいですよね。ね?

サンプルソース

上記の要件をまとめたのが、こちらです。
(例によって宣伝も兼ねてCode 2 HTMLにて公開)

サンプルソース

このサンプルソースでは、新たに作成したSVFExceptionという例外をスローするようにしています。
取り急ぎ試したい方は、これを全部普通のExceptionクラスなりに変更して使ってみてください。
(ちなみにAPI内部で致命的な例外が発生した時は、SvfrExceptionだったかな?そんな名前のExceptionがDLL側から投げつけられます)

で、このクラスを使う側のサンプルコードですが、それはまた次のエントリーで…。

0 件のコメント: