Membuat QR Code di CodeIgniter 4 dan cetak ke PDF
Cara generate atau membuat QR Code di CodeIgniter 4 menggunakan library php-qrcode
dan bisa dicetak ke PDF menggunakan dompdf
.
Download library php-qrcode
via composer
composer require chillerlan/php-qrcode
Di controller dimana QR Code akan ditampilkan dan dicetak, tinggal dipanggil saja
Pastikan nama controller jangan
QRCode
biar gak konflik dengan library nya
// app/Controllers/Qr_code.php
use chillerlan\QRCode\QRCode;
class Qr_code extends BaseController
{
public function index()
{
// data yang akan disimpan di QR code nya, contoh URL
$target = base_url(route_to('presensi.proses'));
// generate QR code
$result = (new QRCode)->render($target);
$data['qr_code'] = $result;
return view('index_qrcode', $data);
}
}
Output default yang dihasilkan dari hasil render QR Code nya berupa base64 encoded URI seperti ini
data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz...
Jadi untuk menampilkannya bisa menggunakan img
// app/Views/index_qrcode.php
<img src="<?= $qr_code ?>" alt="QR Code" width="150">
Untuk cetak ke PDF, download dulu library dompdf
composer require dompdf/dompdf
Buat template view yang akan dicetak di file app/Views/cetak_qrcode.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cetak QR Code</title>
</head>
<body>
<img src="<?= $qr_code ?>" alt="QR Code" width="300">
</body>
</html>
Di file app/Controllers/Qr_code.php
tambahkan method cetak PDF
use chillerlan\QRCode\QRCode;
use Dompdf\Dompdf;
class Qr_code extends BaseController
{
// ...
public function cetak()
{
// data yang akan disimpan dalam QR Code nya, contoh URL
$target = base_url(route_to('presensi.proses'));
// generate QR Code
$result = (new QRCode)->render($target);
$data['qr_code'] = $result;
$html = view('cetak_qrcode', $data);
$dompdf = new Dompdf();
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();
$dompdf->stream('qr_code.pdf', ['Attachment' => false]);
}
}
Jangan lupa tambahkan route
$routes->get('qr_code', 'Qr_code::index', ['as' => 'qr_code']);
$routes->get('qr_code/cetak', 'Qr_code::cetak', ['as' => 'qr_code.cetak']);
URL qr_code
akan menampilkan QR code nya, dan URL qr_code/cetak
akan mencetak QR Code nya ke PDF