LoginSignup
3
2

More than 5 years have passed since last update.

ASTERIA WARPでQRコードを生成してみる

Last updated at Posted at 2017-08-30

はじめに

QRコードの生成はASTERIA WARPのコンポーネントでは提供されていないのでZXingライブラリを使って試してみました。

環境

  • OS : Windows 10
  • Java:1.8.0.121
  • ASTERIA WARP : 1703
  • ライブラリ : ZXing
    • core-3.3.0.jar
    • javase-3.3.0.jar

モジュールの配置

core-3.3.0.jar、javase-3.3.0.jarを[DATA_DIR]/system/lib/userlibに配置

─system
   ├─lib
      └─userlib
              core-3.3.0.jar
              javase-3.3.0.jar

フローの作成

JavaInterpreterコンポーネントを使ってサンプルなどを参考にコードを記述します。

ZXing01.png

何も考えなければこれで動作確認までできると思います。

パラメーターを設定して動的に引数を渡す

JavaInterpreterにパラメーターを設定し、コードに埋め込むことで動的に値をセットすることができるようになります。

QRコードに埋め込む文字列や出力するファイルパスなどをセットするとよいと思います。

ZXing02.png

コンポーネントプロパティ「ソースコード」の該当部分

String contents = component.getParameter("コンテンツ").strValue();
int width = component.getParameter("横幅").intValue();
int height = component.getParameter("高さ").intValue();
ImageIO.write(image, "png", new File(component.getParameter("出力ファイルパス").strValue()));

Binaryの出力ストリームとしてリターンする

JavaInterpreterのヘルプにも通常は文字列で返せば簡単と書いてあるのですが、StreamFactoryを使ってBinaryの出力ストリームとしてセットしてみます。

ZXing03.png

コンポーネントプロパティ「ソースコード」の該当部分

//Binaryストリーム出力
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "png", bos);
StreamFactoryBinary factory = (StreamFactoryBinary)component.getOutputConnector().getStreamFactory();
return factory.create(bos.toByteArray());

出力したQRコード

こんな感じで生成できました。

qrcode.png

PDFファイルに埋め込み

Binaryストリームとして出力しているのでそのままPDFコンポーネントに差し込んでQRコードの画像を埋め込んだPDFを出力することもできました。

ZXing04.png

出力したPDFファイル

ZXing05.png

おわりに

ZXingにはQRコードのデコードもあるようなので時間があるときに試してみたいと思います。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2