You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.8 KiB
58 lines
1.8 KiB
<?php
|
|
|
|
namespace App\Controllers;
|
|
|
|
use Mpdf\Mpdf;
|
|
use Endroid\QrCode\Color\Color;
|
|
use Endroid\QrCode\Builder\Builder;
|
|
use App\Controllers\AdminController;
|
|
use Endroid\QrCode\Writer\PngWriter;
|
|
use Endroid\QrCode\Encoding\Encoding;
|
|
use Endroid\QrCode\RoundBlockSizeMode;
|
|
use Endroid\QrCode\ErrorCorrectionLevel;
|
|
|
|
|
|
class QrCodeController extends AdminController
|
|
{
|
|
public function generate($id)
|
|
{
|
|
// Define the product URL
|
|
$url = base_url("products/show/$id");
|
|
|
|
// if (class_exists(class: \Endroid\QrCode\Builder\Builder::class)) {
|
|
// echo "Builder class is available!";
|
|
// } else {
|
|
// echo "Builder class NOT found!";
|
|
// }
|
|
// exit;
|
|
|
|
// Create QR Code
|
|
$result = \Endroid\QrCode\Builder\Builder::create()
|
|
->writer(new PngWriter())
|
|
->data($url)
|
|
->encoding(new Encoding('UTF-8'))
|
|
->errorCorrectionLevel(ErrorCorrectionLevel::High)
|
|
->size(300)
|
|
->margin(10)
|
|
->roundBlockSizeMode(RoundBlockSizeMode::Margin)
|
|
->foregroundColor(new Color(0, 0, 0)) // Black
|
|
->backgroundColor(new Color(255, 255, 255)) // White
|
|
->build();
|
|
|
|
// Get QR Code as PNG string
|
|
$qrCodeImage = $result->getString();
|
|
|
|
die(var_dump($url));
|
|
// Convert QR Code image to Base64 for embedding in PDF
|
|
$base64Qr = base64_encode($qrCodeImage);
|
|
|
|
// Generate PDF using mPDF
|
|
$mpdf = new Mpdf();
|
|
$mpdf->WriteHTML('<h1 style="text-align: center;">QR Code for Product</h1>');
|
|
$mpdf->WriteHTML('<p style="text-align: center;">Scan this QR code to view the product:</p>');
|
|
$mpdf->WriteHTML('<div style="text-align: center;"><img src="data:image/png;base64,' . $base64Qr . '" /></div>');
|
|
|
|
// Output PDF as download
|
|
return $mpdf->Output('QRCode_Product_' . $id . '.pdf', 'D');
|
|
}
|
|
}
|
|
|