この新機能については、Louis Moreauxさんよるブログ記事が大変参考になります。
実際にQRコードとバーコードを生成するAPEXアプリケーションを作成してみました。エクスポートは以下に置いています。
https://github.com/ujnak/apexapps/blob/master/exports/sample-qrcode-and-barcode.zip
アプリケーションの画面は以下です。以下の機能を実装しています。
- ページ・アイテムによるQRコードの生成。
- APEX_BARCODE.GET_QRCODE_SVGとAPEX_BARCODE.GET_QRCODE_PNGの呼び出しによるQRコードの生成。
- APEX_BARCODE.GET_CODE128_SVGとAPEX_BARCODE.GET_CODE128_PNGの呼び出しによるバーコードの生成。
- APEX_BARCODE.GET_EAN8_SVGとAPEX_BARCODE.GET_EAN8_PNGの呼び出しによるバーコードの生成。
ページ・アイテムとしてQRコードを生成する
ページ・アイテムとして表示したQRコードを細かく調整をするには、CSSを記述します。この方法については、前出のLouis Moreauxさんのブログ記事に書かれています。
今回のサンプル・アプリケーションでは、ページ・アイテムP1_QR_Cのサイズを以下のCSSの記述により4remにしています。
#P1_QR_C {
--a-qrcode-size: 4rem;
}
ページ・プロパティのCSSのインラインに記述します。
パッケージ・プロシージャを呼び出す
プロシージャAPEX_BARCODE.GET_QRCODE_SVGおよびAPEX_BARCODE.GET_QRCODE_PNGを呼び出して、QRコードを生成します。
SVGのソースのCLOBを返すファンクション本体として以下を記述しています。
APEX_BARCODE.GET_QRCODE_SVGでは、戻り値としてSVG要素が文字列として返されるため、そのままページに出力することができます。
APEX_BARCODE.GET_QRCODE_PNGでは、戻り値としてPNG画像のバイナリ・データが返されます。ページに出力するにはBASE64でエンコードしてIMG要素に埋め込む必要があります。
呼び出すプロシージャをAPEX_BARCODE.GET_CODE128_SVGやAPEX_BARCODE.GET_CODE128_PNGに変更すると、QRコードの代わりにCODE128のバーコードが生成されます。
EAN8では8桁の数値に限定されますが、APEX_BARCODE.GET_EAN8_SVGやAPEX_BARCODE.GET_EAN8_PNGを呼び出して、バーコードを生成します。
APEX 23.2のQRコードとバーコードの画像生成の紹介は以上になります。
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完