A Agiler

Agiler QRCode Generator

GeneXusアプリケーションから簡単にQRコード画像を生成するための オープンソースライブラリです。

JavaライブラリとGeneXus外部オブジェクトを組み合わせることで、 既存のGeneXusアプリケーションにQRコード画像の生成機能を追加できます。

Agiler QRCode Generator 実行結果(QRコード生成画面)

GeneXusアプリケーションからQRコードを生成した実行例。

ライブラリ概要

AgilerQrcodeGenerator は、GeneXusアプリケーションから QRコード画像を生成するためのライブラリです。

  • JavaライブラリとしてQRコード生成機能を実装
  • GeneXus External Object から呼び出し可能
  • QRコードをPNG画像として生成
  • 既存アプリケーションに簡単に組み込み可能
  • 実行プラットホームに応じた出力パスに対応

アーキテクチャ

本ライブラリは次の2つの要素で構成されています。

Javaライブラリ (AgilerQrcodeGenerator-0.1.0-all.jar)

QRコード生成処理を実装したJavaライブラリです。

  • ZXingライブラリを利用
  • QRコード画像生成
  • jar形式で配布

GeneXusオブジェクト (AgilerQrcodeGenerator-0.1.0.xpz)

GeneXusからJavaライブラリを呼び出すためのExternal Objectです。

  • External Object,戻り値用SDT
  • Javaライブラリを呼び出し
  • GeneXusアプリから利用可能

KB構成上のポイント、実行の流れ

GeneXusからExternal Objectを呼び出してQRコードを生成してください。

Agiler QRCode Generator 呼び出し例(GeneXusコード)

GeneXus ProcedureからQRコード生成ライブラリを呼び出す例。下はコピペ用。

&Json=&EO_QrcodeLibrary.generateQrcodePNG(
                "/tmp/testqr.png", 
                "C:\\temp\\testqr.png",
                "https://example123.com"
)

&SDT_QucodeLibrary.FromJson(&Json)

Msg("isSuccess:"+&SDT_QucodeLibrary.isSuccess.ToString(),status)
Msg("isWindows:"+&SDT_QucodeLibrary.isWindows.ToString(),status)
Msg("errorMessage:"+&SDT_QucodeLibrary.errorMessage,status)

上記における処理の詳細フロー

  1. GeneXus Procedure から出力パスを引数にして、External ObjectのQRコード生成メソッドを呼び出す
  2. External Object よりJavaライブラリを呼び出す
  3. ライブラリにて実行プラットホームを自動判定。linuxの場合、linux用の出力パス引数を採用。
  4. ZXingライブラリがQRコードをPNG画像として出力パスに保存
  5. GeneXus Procedureに、戻り値が戻るので、SDTで受け取る。
  6. SDTに格納された成功フラグ、エラーメッセージを評価する

ライセンス

AgilerQrcodeGenerator の JavaソースコードはGitHubにて、MITライセンスのオープンソースとして公開しています。
利用条件はリポジトリ内のライセンスファイルをご確認ください。

本ライブラリは QRコード生成のために Google ZXing ライブラリを利用しています。
ZXing は Apache License 2.0 のもとで公開されています。

検証環境

  • GeneXus 18 U8
  • Java 1.8+
  • Tomcat 8.5
  • Windows11 / Linux (RHEL9.6)

Tomcat8.5は、2026年3月時点ですでにサポートエンドしています。10もしくは9の利用を推奨します。

ダウンロード

GeneXus用オブジェクトとJarは GeneXus Marketplace から配布予定です。
JarのJavaソースコードは GitHub にて公開しています。

インストール方法

1. KB構成

まず、KBのプロパティで、Javaのバージョンなどを確認してください。この例は1.8ですが、別のバージョンでも理論上、問題ありません。 Agiler QRCode Generator 実装手順例1

2. AgilerQrcodeGenerator-0.1.0-all.jar の配置

  • リビルド操作を実行して、libフォルダを作成します。
    ※ buildエラーが起きた場合は、FAQ「ビルドエラー」を確認してください。
  • Agiler QRCode Generator 実装手順例2
  • Webフォルダ配下の lib フォルダを探します(libs ではなく lib)。
  • Agiler QRCode Generator 実装手順例3
  • ダウンロードしたAgilerQrcodeGenerator-0.1.0-all.jar を、このフォルダにコピーしてください。

3. AgilerQrcodeGenerator-0.1.0.xpz のインポート

Agiler QRCode Generator 実装手順例4

XPZファイルをインポートした後、次の2つのオブジェクトの存在を確認してください。

Agiler QRCode Generator 実装手順例5

さらに、次のファイルオブジェクトの存在を確認してください。

Agiler QRCode Generator 実装手順例6

4. プロシージャーオブジェクトで、QRコードを印刷するには

  • 変数
  • Agiler QRCode Generator 実装手順例7
  • レイアウト
  • Agiler QRCode Generator 実装手順例8
  • ソース / ルール
  • Agiler QRCode Generator 実装手順例9 ここで、6行目のDenpyoURLは、例です。QRコードとして印字したい情報で、定数でもかまいません。

5. 出力例

Agiler QRCode Generator 実装手順例10

デプロイ方法例

すでに、KBのfileオブジェクトとして、次のオブジェクトがあることを確認してください。 Agiler QRCode Generator デプロイ方法手順1

確認後、デプロイファイルにこのファイルを加えてください Agiler QRCode Generator デプロイ方法手順2 Agiler QRCode Generator デプロイ方法手順3

FAQ

Q:QRコードをPDFに印刷できますか。

はい、前述の実装例を確認ください。

Q:ビルド時にJavaエラーが発生する

Java環境が正しく設定されているか確認してください。 JAVA_HOMEを含め GeneXus の Java Generator 設定のJava Versionの一致の確認をお勧めします。 Java 1.8をお使いで次のエラーの場合、最新版の1.8の利用をお勧めします。

apply services.webnotifications.genexus.gradle
> Task :assemble
> Task :check
> Task :build
> Task :compileJava FAILED
> Task :copyAdditionalFiles
> Task :copyRuntimeLibs FAILED
FAILURE: Build completed with 2 failures.
1: Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':compileJava'.
> Could not resolve all files for configuration ':compileClasspath'.
   > Could not download gxwebsocket-4.4.0.jar (com.genexus:gxwebsocket:4.4.0)

Q:QRコード画像が生成されない

生成先ディレクトリの権限やパス設定を確認してください。また、QRコードの出力がlinux上されているのか、ライブラリの戻り値のログ(JSON)の確認をおすすめします。

Q:実行時例外が発生した

次のエラーが発生した場合は、jarへの接続がおかしいことを意味しています。本稿のデプロイ方法をもう一度確認して、デプロイ時にjarファイルをいれたか確認してください。 Agiler QRCode Generator エラー例

Q:サポートはありますか?

バグ報告は GitHub Issue で受け付けています。
個別のメールやzoomでの対応、カスタマイズなどは、有償で対応しています。