如何从html响应PHP在qrcode tcpdf中间设置徽标?

问题描述

我正在使用 TCPDF 库使用 PHP 生成 pdf 文件。他们还具有创建二维码功能

这是我的语法

$style = array(
    'border' => 0,'vpadding' => 'auto','hpadding' => 'auto','fgcolor' => array(0,0),'bgcolor' => false,//array(255,255,255)
    'module_width' => 1,// width of a single module in points
    'module_height' => 1 // height of a single module in points
 );

$this->cetak->AddPage('P','A4');
$this->cetak->write2DBarcode("aaaaa",'QRCODE,L',155,$this->cetak->getY(),30,$style);
$this->cetak->Output('PKKPR.pdf','I');
die;

这是输出

enter image description here

对于 html 输出二维码,我正在使用此代码

    $barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org',H');
    print_r($barcodeobj->getBarcodeHTML(3,3,'black'));
    die;

这是输出

enter image description here

如何在二维码中间制作logo?我试图搜索文档,但找不到。甚至可以在二维码的中心设置徽标吗?

解决方法

我可能会在这里纠正,但我不认为 TCPDF 条码 API 可以将徽标嵌入到 QR 码中。我建议使用 endroid/qr-code 库。

按照示例构建您的二维码,然后使用 base 64 编码的数据 URI 将结果嵌入到您的 PDF 中,就像这样

use Endroid\QrCode\QrCode;

// Compile your QR code
$qr = QrCode::create('Data');

// Render to data URI
$data = $qr->getDataUri();

// Add to PDF page (WriteHTML example)
$pdf->writeHTML("<img src=\"$data\" width=\"200\" height=\"200\">");
,

如果您有 GD 库(看起来像您一样),请使用 getBarcodePNGData() 滚动您自己的徽标/qr 组合,并使用 imagecopymerge

在其上应用您的徽标
$barcodeObj = new TCPDF2DBarcode('http://www.tcpdf.org','QRCODE,H');
$qrCode = $barcodeObj->getBarcodePNGData(3,3,'black');
$logo = imagecreatefrompng('logo.png');

//center in qr code
$logoX =  imagesx($qrCode)/2 - imagesx($logo)/2;
$logoY =  imagesy($qrCode)/2 - imagesy($logo)/2;

imagecopymerge($qrCode,$logo,$logoX,$logoY,imagesx($qrCode),imagesy($qrCode),75);

imagepng($qrCode,null,100); // this will stream the image out directly