<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Azmil Awaludin</title>
    <description>The latest articles on Forem by Azmil Awaludin (@azmil_awaludin).</description>
    <link>https://forem.com/azmil_awaludin</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3782186%2F616ffedd-052a-46fa-81aa-0d718f1bb9c4.jpg</url>
      <title>Forem: Azmil Awaludin</title>
      <link>https://forem.com/azmil_awaludin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/azmil_awaludin"/>
    <language>en</language>
    <item>
      <title>Membuat Plugin Oracle APEX QR Code dengan Custom Logo</title>
      <dc:creator>Azmil Awaludin</dc:creator>
      <pubDate>Sat, 21 Feb 2026 03:35:09 +0000</pubDate>
      <link>https://forem.com/azmil_awaludin/membuat-plugin-oracle-apex-qr-code-dengan-custom-logo-2nop</link>
      <guid>https://forem.com/azmil_awaludin/membuat-plugin-oracle-apex-qr-code-dengan-custom-logo-2nop</guid>
      <description>&lt;p&gt;Di ekosistem Oracle APEX, fitur QR Code sebenarnya sudah banyak tersedia dalam bentuk plugin Oracle Apex. Tapi masalah muncul saat ada kebutuhan spesifik, misalnya menyisipkan logo perusahaan di tengah QR Code agar terlihat lebih profesional dan sesuai branding.&lt;/p&gt;

&lt;p&gt;Setelah mencari beberapa referensi plugin yang ada, kebanyakan hanya mendukung generate QR standar tanpa opsi kustomisasi gambar. Akhirnya saya memutuskan untuk membangun plugin sendiri agar bisa digunakan berulang kali di berbagai proyek tanpa harus menulis ulang kode JavaScript di setiap aplikasi.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpksjcjuz4lnac7cf632.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmpksjcjuz4lnac7cf632.PNG" alt="QR Code Logo APEX" width="662" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Alasan Membangun Plugin Sendiri&lt;/strong&gt;&lt;br&gt;
Sebagai developer, efisiensi itu penting. Saya ingin fitur ini bersifat "Plug-and-Play" dengan beberapa kriteria:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Konfigurasi logo, ukuran, dan warna bisa diatur langsung melalui Page Designer.&lt;/li&gt;
&lt;li&gt;Mendukung Error Correction Level yang tinggi agar QR tetap bisa dibaca meski tertutup logo.&lt;/li&gt;
&lt;li&gt;Bisa digunakan oleh developer lain hanya dengan drag-and-drop.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Proses Teknis dan Tantangan&lt;/strong&gt;&lt;br&gt;
Dalam pembuatan plugin ini, saya menggunakan library JavaScript &lt;a href="https://github.com/kozakdenys/qr-code-styling" rel="noopener noreferrer"&gt;qr-code-styling&lt;/a&gt; yang mendukung rendering pada elemen canvas.&lt;/p&gt;

&lt;p&gt;Di sisi backend (PL/SQL), saya membuat fungsi render untuk menjembatani atribut yang diinput di APEX Page Designer ke dalam properti JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;function f_render (&lt;br&gt;
    p_dynamic_action in apex_plugin.t_dynamic_action,&lt;br&gt;
    p_plugin         in apex_plugin.t_plugin )&lt;br&gt;
    return apex_plugin.t_dynamic_action_render_result&lt;br&gt;
is&lt;br&gt;
    l_result apex_plugin.t_dynamic_action_render_result;&lt;br&gt;
begin &lt;br&gt;
    l_RESULT.JAVASCRIPT_FUNCTION   := 'qr.initialize';&lt;br&gt;
    l_result.attribute_01 := p_dynamic_action.attribute_01;&lt;br&gt;
    l_result.attribute_02 := p_dynamic_action.attribute_02;&lt;br&gt;
    l_result.attribute_03 := p_dynamic_action.attribute_03;&lt;br&gt;
    l_result.attribute_04 := p_dynamic_action.attribute_04;&lt;br&gt;
    l_result.attribute_05 := p_dynamic_action.attribute_05;&lt;br&gt;
    return l_result;&lt;br&gt;
end;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementasi di Page Designer&lt;/strong&gt;&lt;br&gt;
Setelah plugin selesai dikemas dalam file .sql, cara pakainya jadi sangat sederhana hanya perlu import plugin ke Shared Components.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Buat Page item bertipe text field dan buat tombol.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Buat dynamic action untuk tombol ketika di klik.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lalu pilih QR Code with logo.&lt;br&gt;
Plugin ini mempunyai 5 attribut dan wajib di isi.&lt;br&gt;
Saya berikan contoh isi dari attribut&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3d3e5658oikf5jn2jdq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd3d3e5658oikf5jn2jdq.png" alt="QR Code Logo APEX" width="362" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lalu buat sub region dengan isi html sebagai berikut&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;center&amp;gt;&lt;br&gt;
    &amp;lt;div id="canvas"&amp;gt;&lt;br&gt;
    &amp;lt;/div&amp;gt;&lt;br&gt;
  &amp;lt;/center&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Maka hasilnya akan seperti ini. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbnsydq0d8gh13b0nr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphbnsydq0d8gh13b0nr1.png" alt="QR Code Logo APEX" width="652" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kesimpulan&lt;/strong&gt;&lt;br&gt;
Membangun plugin sendiri memberikan fleksibilitas penuh terhadap UI/UX aplikasi kita. Selain menyelesaikan masalah kustomisasi logo, plugin ini juga mempercepat proses development di tim saya.&lt;/p&gt;

&lt;p&gt;Tutorial atau dokumentasi Oracle APEX dalam bahasa Indonesia memang masih jarang. Semoga tulisan singkat ini bisa memberikan gambaran bagi teman-teman yang ingin mencoba mengekstensi fitur APEX melalui pembuatan plugin.&lt;/p&gt;

&lt;p&gt;Jika ingin melihat detail kodenya atau mencoba plugin ini, silakan cek di repository saya: &lt;a href="https://github.com/Azm1l/apex-qr-logo.git" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>javascript</category>
      <category>sql</category>
    </item>
  </channel>
</rss>
