【GeneXus】QRコード作成(C#)

GeneXusだとQRコードが標準でサポートされてないので
ネイティブで実装する方法を備忘録として。

環境

・GeneXus17
・C#
・.NetFramework4

ライブラリ作成

まずはC#のライブラリを作成

作り方は数年前の私が書いてるので適当に参考にして

今回はC#なのでこちらのライブラリを使用。Visual StudioのNuGetで適当に取得。

オプション等渡せる値は多いけど、
今回はQRコードにするURLと、QRコードを保存する絶対パスを引数として指定できるようにします。

QRCode.cs
using System;

namespace GxQRCode
{
    public class QRCode
    {
        public static void Create(String URL, String Path)
        {
            var writer = new ZXing.BarcodeWriter
            {
                Format = ZXing.BarcodeFormat.QR_CODE,
                Options = new ZXing.QrCode.QrCodeEncodingOptions
                {
                    Height = 200,
                    Width = 200,
                    Margin = 1
                }
            };
            var bitmap = writer.Write(URL);
            bitmap.Save(Path);
        }
    }
}

今回は以下のように設定
namespace(DLL名):GxQRCode
class(GX側のオブジェクト名):QRCode
method名(GX側の呼び出す際のメソッド名):Create

GeneXus側

KBを適当に作成して、「External Object」を作成。
これもこちらの記事を参考に設定。(プロパティ値を設定するのがメンドイ)

Visual Studioで作成したDLLと、ZXingのDLLをKB側にコピーしたら
ビルドをしてエラーが無ければ問題なし。

適当な画面を作成して、ボタン押下でQRコードを作成するようにコーディング。

Event
Event 'QRCreate'
	
	// ファイル名に付与するタイムスタンプ文字列を作成
	&DateTime = Now()
	&DateStr = PadL(&DateTime.Year().ToString().Trim(), 4, !"0") + 
		PadL(&DateTime.Month().ToString().Trim(), 2, !"0") + 
		PadL(&DateTime.Day().ToString().Trim(), 2, !"0") + 
		!"_" + 
		PadL(&DateTime.Hour().ToString().Trim(), 2, !"0") + 
		PadL(&DateTime.Minute().ToString().Trim(), 2, !"0") + 
		PadL(&DateTime.Second().ToString().Trim(), 2, !"0") + 
		!"_" + 
		PadL(&DateTime.Millisecond().ToString().Trim(), 3, !"0")
	
	// 絶対パスを作成
	&Directory.Source = !"C:\Models\GX17U2_QRTEST_20241112\CSharpModel\web\qrcode"
	// ファイル名とURIを作成
	&URI = &Directory.GetAbsoluteName() + &File.Separator + !"qrcode_" + &DateStr + !".png"

	// QRコードを作成
	QRCode.Create(&QRString, &URI)
	
	// 画像を表示
	&Blob.FromString(&URI)
	&URL = PathToUrl(&Blob)
	&Image.FromURL(&URL)
	
Endevent

所定の場所にQRコードが作成されました。
パス作成部分がハードコーディングなのはご愛嬌で・・・w

作成ボタンを押下したら、画面上に表示してみます。

同じ要領でボタン押下したら、PDFに画像を表示します。

(まぁ画面もPDFも同じっちゃ同じ)

まとめ

ということで今回はQRコードの画像を作成してみました。
生成系AIとか当たり前にある世の中ですが
さすがにQRコード1個にAI使いたいかと言われると・・・微妙かなとw

以上!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください