この新機能については、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を返すファンクション本体として以下を記述しています。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if :P1_URL2 is null then | |
return ''; | |
end if; | |
return apex_barcode.get_qrcode_svg( | |
p_value => :P1_URL2 | |
,p_size => :P1_SIZE | |
); |
APEX_BARCODE.GET_QRCODE_SVGでは、戻り値としてSVG要素が文字列として返されるため、そのままページに出力することができます。
APEX_BARCODE.GET_QRCODE_PNGでは、戻り値としてPNG画像のバイナリ・データが返されます。ページに出力するにはBASE64でエンコードしてIMG要素に埋め込む必要があります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if :P1_URL2 is null then | |
return ''; | |
end if; | |
return '<img src="data:image/png;base64,' || | |
apex_web_service.blob2clobbase64( | |
p_blob => apex_barcode.get_qrcode_png( | |
p_value => :P1_URL2 | |
,p_scale => :P1_SCALE | |
) | |
,p_newlines => 'N' | |
,p_padding => 'N' | |
) | |
|| '">'; |
呼び出すプロシージャを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のアプリケーション作成の参考になれば幸いです。
完