jvGetDocument(各種ドキュメントデータ取得)
帳票データを取得します。
[構文]
Function jvGetDocument(ByVal jid As Long, ByRef docData
As Byte) As Long
C言語
int jvGetDocument(int jid, char *docData
);
Delphi
Function jvGetDocument(jid:
Longint; docData: array of Byte): Longint;
設定項目 |
内容 |
jid
|
jvCreateで取得したジョブID |
docData |
データを取得するバッファ |
リターンコード
定数 |
値 |
内容 |
|
0以上 |
取得した文字列の長さ |
JV_ERR_JOBID |
-3 |
ジョブ識別番号エラー |
JV_ERR_PARAMETER |
-2 |
パラメータエラー |
JV_ERR_MEMORY |
-4 |
メモリ関連エラー |
[設定値]
docData には値を設定できません。
[解説]
jvGetDocument は、作成された帳票のデータを取得する時に使います。
取得できるデータの種類は、jvCreateの出力先デバイスによって異なります。(下表参照)
出力先デバイス |
取得データ |
JV_RDF |
RDF形式のデータ |
JV_PDF |
Adobe PDF形式のデータ |
JV_BMP |
BMP形式のデータ |
JV_JPEG |
JPEG形式のデータ |
JV_TIFF |
TIFF形式のデータ |
JV_PNG |
PNG形式のデータ |
JV_XPS |
XPS形式のデータ |
docData には、帳票データが入ります。jvGetDocument
をコールする前に、docData
にデータを格納することができる領域を確保しておく必要があります。必要なサイズは、jvGetLongを使って取得することができます。
jvGetDocument は、jvEndDoc
と jvClose
の間でコールします。
64ビットのレポートライブラリDLL(X64対応版)の場合、jvGetDocument は、VisualBasic2005・VisualBasic2008では使用できません。
[コーディング例]
Visual Basicの場合
Dim iDocSize As Long
Dim sDocData() As Byte
pid= jvCreate(JV_RDF,...)
:
ret = jvEndDoc(pid)
'RDFデータサイズの取得
iDocSize = jvGetLong(pid, JV_DOCUMENT_SIZE)
If iDocSize > 0 Then
'RDFデータ取得用バッファの確保
ReDim sDocData(iDocSize)
'RDFデータの取得
ret = jvGetDocument(pid, sDocData(0))
End If
'レポートライブラリの終了処理を実行します。
ret = jvClose(pid)
'プレビューコントロールにRDFデータを渡す
If iDocSize > 0 Then
JiveView.DocumentData = sDocData
JiveView.Show
End If
JAVAの場合
int iPdfLen;
int jid;
String sLength;
jid = Jvalib.jvCreate(Jvalib.JV_PDF, 0, 0, 0,
iFormWidth, iFormHeight, "");
:
:
//PDFデータの長さを取得し、データ取得用バッファを確保
iPdfLen = Jvalib.jvGetLong(jid,Jvalib.JV_PDF_SIZE);
byte baPdfData[] = new byte[iPdfLen];
if ( iPdfLen > 0 ){
//PDFデータを取得
Jvalib.jvGetDocment(jid, baPdfData);
}
//レポートライブラリの終了処理を実行します。
Jvalib.jvClose(pid);
// PDFデータの出力
// ContentTypeを設定します。
response.setContentType("application/pdf");
sLength = Integer.toString(iPdfLen);
response.addHeader("content-length",
sLength);
response.addHeader("content-disposition",
"inline; filename=JIVE.PDF");
// バイナリ形式でPDFデータを出力します。
ServletOutputStream baos = response.getOutputStream();
baos.write(baPdfData,0,iPdfLen);
baos.flush();