html response PHP 如何在二维码tcpdf中心设置logo?
How to set logo on the center of qrcode tcpdf from html response PHP?
我正在使用 TCPDF 库通过 PHP 生成 pdf 文件。他们还有创建二维码的功能。
这是我的语法
$style = array(
'border' => 0,
'vpadding' => 'auto',
'hpadding' => 'auto',
'fgcolor' => array(0, 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, 30, $style);
$this->cetak->Output('PKKPR.pdf', 'I');
die;
这是输出。
html输出二维码,我用的是这个码
$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H');
print_r($barcodeobj->getBarcodeHTML(3, 3, 'black'));
die;
这是输出。
如何在二维码中间做logo?我试图搜索文档,但找不到相关信息。甚至可以在二维码的中心设置徽标吗?
我可能会在这里纠正,但我不认为 TCPDF 条形码 API 可以将徽标嵌入 QR 码。我推荐使用 endroid/qr-code 库。
按照示例构建您的 QR 码,然后使用 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(), and applying your logo on top of it using imagecopymerge
滚动你自己的 logo/qr 组合
$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, 0, 0, $logoX, $logoY, imagesx($qrCode), imagesy($qrCode), 75);
imagepng($qrCode, null, 100); // this will stream the image out directly
如果您按照上面“教授”的建议使用 endroid/qr-code
库,您还可以使用数据流中的 $pdf->Image
:
// Render to data as string
$data = $qr->getString();
// The '@' character is used to indicate that follows an image data stream and not an image file name
$pdf->Image('@'.$data);
我正在使用 TCPDF 库通过 PHP 生成 pdf 文件。他们还有创建二维码的功能。
这是我的语法
$style = array(
'border' => 0,
'vpadding' => 'auto',
'hpadding' => 'auto',
'fgcolor' => array(0, 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, 30, $style);
$this->cetak->Output('PKKPR.pdf', 'I');
die;
这是输出。
html输出二维码,我用的是这个码
$barcodeobj = new TCPDF2DBarcode('http://www.tcpdf.org', 'QRCODE,H');
print_r($barcodeobj->getBarcodeHTML(3, 3, 'black'));
die;
这是输出。
如何在二维码中间做logo?我试图搜索文档,但找不到相关信息。甚至可以在二维码的中心设置徽标吗?
我可能会在这里纠正,但我不认为 TCPDF 条形码 API 可以将徽标嵌入 QR 码。我推荐使用 endroid/qr-code 库。
按照示例构建您的 QR 码,然后使用 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(), and applying your logo on top of it using imagecopymerge
滚动你自己的 logo/qr 组合$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, 0, 0, $logoX, $logoY, imagesx($qrCode), imagesy($qrCode), 75);
imagepng($qrCode, null, 100); // this will stream the image out directly
如果您按照上面“教授”的建议使用 endroid/qr-code
库,您还可以使用数据流中的 $pdf->Image
:
// Render to data as string
$data = $qr->getString();
// The '@' character is used to indicate that follows an image data stream and not an image file name
$pdf->Image('@'.$data);