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){ // 例外処理 ・ ・ ・ } } }