開発Blog

SVF(SuperVisualFormade)とintra-martの連携について

投稿日:


※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。
最新のintra-martでは、異なる情報であることがありますので、ご注意ください。


最近、SuperVisualFormade(以下SVF)との連携を要望されるお客様が増えてまいりま した。このコラムでは、intra-martベースモジュール/フレームワークとSVFとの連携方法について詳述いたします(J2EE開発モデルでの連携方法です)。

(1)SVFの概要
図のようにユーザAPIからSVFAPI経由でSVFを呼び出します。

(2)SVF機能一覧
以下にSVFを利用する際の機能一覧を記します。

(3)コーディング例

JAVAサンプルプログラム(クエリー使用)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;      //SVF for WEB パッケージのインポート
public class Servlet_Sample extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",5);     //SVFで設計したフォームの設定/
ret = svf.VrSetQuery("UID=scott;PWD=tiger","D:\\servlet\\Sample.vrq",0);    // クエリーファイルの設定
ret = svf.VrCondition("DEPTNO=10",0);     //クエリーの条件(Where句)の設定/
ret = svf.VrReport();     //クエリーの実行
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム(アプリケーション側で データ抽出の場合)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("text/html");
ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileName2("D:\\demo\sample.pdf");     //PDFファイル名の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定/
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();     //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了
(PDFファイルが生成される)
out.println("<html><body leftmargin=0 topmargin=0 scroll=no>)
<embed width=100% height=100% fullscreen=yes
src=\"http://10.15.20.105/DEMO/sample.pdf\"></body></html>");     //作成されたPDFファイルをブラウザに表示
out.close();
}
}


JAVAサンプルプログラム (PDFファイルを作らない方法)

package servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import jp.co.fit.vfreport.*;     //SVF for WEB パッケージのインポート
public class Servlet_Sample2 extends HttpServlet{
static Vrw32 svf = new Vrw32();     //PDF生成クラスのインスタンス生成
static int ret;     //グローバル変数の初期化
public void init(ServletConfig config)throws ServletException{
super.init(config);     //HTTP Post リクエストの処理
}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
PrintWriter out = new PrintWriter(response.getOutputStream());
response.setContentType("application/pdf");
OutputStream os = response.getOutputStram();

ret = svf.Vrinit();     //クラスの初期化
ret = svf.VrSetDocName2("レポートライターサンプル1");     //PDFファイルのドキュメント名の設定
ret = svf.VrSetSpoolFileStream(os);     //PDFファイルをメモリー出力の設定
ret = svf.VrSetForm("Sample.frm",4);     //SVFで設計したフォームの設定
ret = svf.VrsOut("DEPTNO","10" );     //フィールドにデータを貼り付け
ret = svf.VrsOut("DNAME","SALES" );
ret = svf.VrsOut("LOC" ,"CHICAGO");
ret = svf.VrsOut("EMPNO","7844" );
ret = svf.VrEndRecord();      //レコードの出力
ret = svf.VrPrint();     //PDFファイルの出力
ret = svf.VrQuit();     //PDFファイル出力処理終了

os.close();     //作成されたPDFファイルをブラウザに表示
}
}


以上を参考に連携プログラムを作成してみてください。
ちなみにページベース開発モデルのJavaScriptからはLiveConect(Java呼び出し)を使えばできます。
SVFの提供しているのはJAVAのAPIのみなので、JavaScriptのAPIとして使いたい場合は、こちらでSVFのJAVAのAPIをラップし て、JavaScriptのAPIを作ってあげる必要があります。

以上

-開発Blog
-

執筆者:

関連記事

no image

intra-mart利用中の「セッション切れ」について

  ※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。   intr …

no image

Formaスクリプトのデバッグについて

今回のブログ記事では、開発したスクリプトをデバッグするためのTipsを紹介します。 TipsはクライアントサイドJavaScriptの開発一般におけるテクニックを紹介するものであり、製品サポートの対象 …

no image

iCEC2011 eBuilder AppProducer

4/26に開催された「intra-mart Certified Evangelist Conference 2011(iCEC2011)」での講演資料を公開します。 eBuilder AppProdu …

no image

intra-mart 以外のプログラムを実行する

※下記内容は、過去のintra-mart(Ver4.3以前)に関する内容です。最新のintra-martでは、異なる情報であることがありますので、ご注意ください。 通常、intra-mart を We …

no image

intra-mart Advent Calendar 2013 第21日:ルーティングテーブルに認可リソースを設定しないで済ませる方法

この記事は、intra-mart Advent Calendar 2013 第21日の記事です。 今回は、AutoRegisteringResourceMapper を紹介させていただきます。 このマ …