ページの先頭行へ戻る
 Formcoordinatorユーザーズガイド

C.1.5 クラス:Base64

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

encode(byte[ ])

入力ストリームに指定したデータをBase64にエンコードし、出力ストリームに出力します。

static byte[ ]

decode(java.lang.String)

入力ストリームに指定したBase64のデータをデコードし、出力ストリームに出力します。

メソッドの詳細

encode(byte[ ])

形式:

public static java.lang.String encode(byte[ ] b)

説明:

バイト配列をBase64にエンコードして、通知します。


パラメタ:

b

エンコードするデータを格納したバイト配列


戻り値:

java.lang.String

Base64にエンコードされた文字列。パラメタがnullの場合、または配列の要素数が0の場合は、null


例外:

なし


関連項目:

decode()

decode(java.lang.String)

形式:

public static byte[ ] decode(java.lang.String str)
  throws com.fujitsu.form.Base64FormatException

説明:

Base64にエンコードされた文字列をデコードし、バイト配列に格納して通知します。


パラメタ:

str

Base64にエンコードされた文字列


戻り値:

byte[ ]

デコードしたデータを格納したバイト配列。パラメタがnullの場合、または空の文字列を指定した場合は、null


例外:

com.fujitsu.form.Base64FormatException

Base64形式に違反している場合


関連項目:

encode()

■ 使用例

Base64クラスの使用例を次に示します。

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