首页 > 解决方案 > 当我将 tcpdf 与 html 和 base64 图像一起使用时,我只看到一个白色方块而不是我的图像

问题描述

我正在尝试使用 tcpdf 库和 php 创建一个 pdf。我有一个模板 html 文件,其中填充了数据库中的数据,然后打印为 pdf。还有一个图像应该包含在文件中。图像存储在服务器上,因此我不能用于加载图像。我尝试在我的 html 中使用 base64:

$path = $cardInfo['picsrc'];
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = '<div><span>Hi</span><img src="data:image/' . $type . ';base64,' . base64_encode($data) . "\"/><span>Bye</span></div>";
$pdf->writeHTML($base64);

base64 是正确的,当我将其复制到 html 文件中时,我可以看到图像。但我无法在 pdf 中看到我的图像。我只看到一个空的白色方块,如下图所示: 输出pdf图片

我把完整的代码放在这里:

$pdf = new MYTCPDF('P', PDF_UNIT, 'A4', true, 'UTF-8', false);
$pdf->SetPrintHeader(false);
$pdf->SetPrintFooter(false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$l = Array();
$l['a_meta_charset'] = 'UTF-8';
$l['a_meta_dir'] = 'rtl';
$l['a_meta_language'] = 'fa';
$l['w_page'] = 'page';
$pdf->setLanguageArray($l);
$pdf->setFontSubsetting(true);

$pdf->SetFont('dejavusans', '', 14, '', true);

$pdf->AddPage('L', 'A4');
$path = $cardInfo['picsrc'];
$type = pathinfo($path, PATHINFO_EXTENSION);
$data = file_get_contents($path);
$base64 = '<div><span>Hi</span><img src="data:image/' . $type . ';base64,' . base64_encode($data) . "\"/><span>Bye</span></div>";
$pdf->writeHTML($base64);

我使用 tcpdf 版本 6.3.2

标签: phphtmlbase64tcpdf

解决方案


尝试在中回显编码图像img src

<?php
 $encode_img ='"data:image/'. $type.';base64,'.base64_encode($data).'"';
?>
<img src=<?php echo $encode_img; ?>>

推荐阅读