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
に確保しておきます。
ドキュメントデータは、jvEndDoc
と jvClose
の間で取得します。
プロフェッショナル(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();