Base64のエンコード、デコードを行います。
バーコード種別がCode 128、EAN-128、QR Code(モデル1)またはQR Code(モデル2)のバーコード項目のデータなど、XMLデータとして利用できない範囲の文字(データ)が含まれる場合は、バイナリデータからBase64にエンコード、またはBase64からバイナリデータにデコードすることで、XMLデータとして利用できます。
■ クラスの概要
クラス名 | Base64 |
パッケージ名 | com.fujitsu.form |
文法 | public class Base64 |
継承関係 | java.lang.Object | +--- com.fujitsu.form.Base64 |
■ メソッドの概要
戻り値型 | メソッド名 | 説明 |
|---|---|---|
static java.lang.String | 入力ストリームに指定したデータをBase64にエンコードし、出力ストリームに出力します。 | |
static byte[ ] | 入力ストリームに指定したBase64のデータをデコードし、出力ストリームに出力します。 |
■ メソッドの詳細
形式:
public static java.lang.String encode(byte[ ] b)
説明:
バイト配列をBase64にエンコードして、通知します。
パラメタ:
エンコードするデータを格納したバイト配列
戻り値:
Base64にエンコードされた文字列。パラメタがnullの場合、または配列の要素数が0の場合は、null
例外:
なし
関連項目:
decode()
形式:
public static byte[ ] decode(java.lang.String str) throws com.fujitsu.form.Base64FormatException
説明:
Base64にエンコードされた文字列をデコードし、バイト配列に格納して通知します。
パラメタ:
Base64にエンコードされた文字列
戻り値:
デコードしたデータを格納したバイト配列。パラメタがnullの場合、または空の文字列を指定した場合は、null
例外:
Base64形式に違反している場合
関連項目:
encode()
■ 使用例
Base64クラスの使用例を次に示します。
Code 128、EAN-128、QR Code(モデル1)およびQR Code(モデル2)のバーコード項目のデータをBase64にエンコードする場合
バーコード種別がCode 128、EAN-128、QR Code(モデル1)およびQR Code(モデル2)のバーコード項目の場合、XMLデータでは扱えないコードも利用するため、XMLデータにはBase64にエンコードしたデータを設定する必要があります。
import org.w3c.dom.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
import java.io.* ;
import com.fujitsu.form.* ;
public class SampleServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
// OutputDataBuilderオブジェクトを生成します。
// Windowsの場合は以下のように記述します。
OutputDataBuilder odb = new OutputDataBuilder(request,
java.net.URLEncoder.encode("file:///c:/pmd",
System.getProperty("file.encoding")), "sample");
// SolarisおよびLinuxの場合は以下のように記述します。
// OutputDataBuilder odb = new OutputDataBuilder(request,
// java.net.URLEncoder.encode("file:////home/pmd",
// System.getProperty("file.encoding")), "sample");
// 雛形のXMLデータをドキュメントオブジェクトで取得します。
Document doc = odb.getTemplateXMLData() ;
// Base64に変換したデータをバーコード項目に設定します。
byte[] data = {0x01, 0x02, 0x03, 0x04, 0x05,
0x06, 0x07, 0x08, 0x09};
String encode_data = Base64.encode(data);
// docのバーコード項目(タグ名「CODE128」、バーコード種別「Code 128」)に
// データを設定します。
XmlDataAccess xda = new XmlDataAccess(doc);
xda.setValue("CODE128", encode_data);
// 初期値のデータを設定します。
odb.setXMLData(doc, true) ;
// 初期値のデータを使用して、電子フォームをHTML データに変換して出力します。
odb.write(response.getOutputStream());
}
catch(Exception e){
// 例外処理
・
・
・
}
}
}
Code 128、EAN-128、QR Code(モデル1)およびQR Code(モデル2)のバーコード項目のデータをBase64からデコードする場合
バーコード種別がCode 128、EAN-128、QR Code(モデル1)およびQR Code(モデル2)のバーコード項目の場合、XMLデータでは扱えないコードも利用するため、XMLデータにはBase64にエンコードしたデータが設定されています。そのため、デコードして実際のデータに変換します。
import org.w3c.dom.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
import java.io.* ;
import com.fujitsu.form.* ;
public class SampleServlet extends HttpServlet {
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
try {
// InputDataBuilderオブジェクトを生成します。
InputDataBuilder idb = new InputDataBuilder(request) ;
// Webブラウザから送信されたXMLデータをドキュメントオブジェクトで取得
// します。
Document doc = idb.getXMLData() ;
String b64_data ;
// XMLデータからバーコード項目(タグ名「CODE128」、バーコード種別「Code
// 128」)のデータ(Base64)をString b64_dataに取得します。
XmlDataAccess xda = new XmlDataAccess(doc);
b64_data = xda.getValue("CODE128");
byte[] decode_data = Base64.decode(b64_data);
// 処理の続き
・
・
・
}
catch(Exception e){
// 例外処理
・
・
・
}
}
}