開発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

FormaDesigner「正方形/長方形」を使って帳票っぽい画面を作る♪

FormaDesignerのパッチ1が1/27にリリースされました。 そのパッチ1で追加された画面アイテム「正方形/長方形」を使って、帳票っぽい画面を作ってみました。     上記 …

no image

intra-mart Advent Calendar 2013 第12日:認可リソースの拡張方法

この記事は、intra-mart Advent Calendar 2013 第12日の記事です。 今回は「認可リソースの拡張方法」をご紹介したいと思います。 intra-mart Accel Plat …

no image

intra-mart Accel Kaiden! のガジェットを使いこなそう!①

以前のintra-mart Accel Kaiden ! の記事で紹介した「ガジェット」は、申請書内の関連する画面項目のグループや入力チェックとして利用できますが、もっと便利に利用するための設定機能も …

no image

トイレの空き状況の見える化システム

初めまして、開発本部の矢野と申します。 この記事では今までとはちょっと違い、intra-mart 社の普段の雰囲気を感じていただくために、製品の説明や紹介ではなく、私がつい最近取り組んだ日常的な仕事に …

no image

intra-mart Advent Calendar 2013 第23日:iWP/iAFでJSP1ファイルだけで、任意の画面を呼び出す方法

この記事は、intra-mart Advent Calendar 2013 第23日の記事です。 Accel Platformの機能紹介を行ってきたintra-mart Advent Calender …

まだデータがありません。

RSSRSSRSSRSS