jvGetDocument(各種ドキュメントデータ取得)

RDFドキュメントデータやAdobe PDFドキュメントデータを取得します。
 
[構文]
 
Function jvGetDocument(ByVal jid As Long, ByRef docData As Byte) As Long
 
C言語
int jvGetDocument(int jid, char *docData );
 
JAVA
int jvGetDocument(int jid, byte[] 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 は、メモリ上に作成されたRDF形式、または、Adobe PDF形式のドキュメントデータを取得する時に使います。
  
取得できるデータの種類は、jvCreateの出力先デバイスによって異なります。(下表参照)
 

出力先デバイス

取得データ

JV_RDF

RDFドキュメントデータ

JV_PDF

Adobe PDFドキュメントデータ

 
jvGetDocument を実行する前に、jvGetLongを使ってドキュメントデータのサイズを取得し、取得したサイズの領域をdocData に確保しておきます。
 
ドキュメントデータは、jvEndDocjvClose の間で取得します。
 
プロフェッショナル(X64)のレポートライブラリDLLでは、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.rdfData = 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();