gpt4 book ai didi

php - 将 BASE64 编码图像打印到 PDF 文档中

转载 作者:可可西里 更新时间:2023-10-31 22:54:15 24 4
gpt4 key购买 nike

我在数据库中存储了一些 base64 图像。是否可以使用 FPDF 直接在 PDF 文档中打印这些数据?

图像的数据结构

data:image/png;base64,iVBORw0KGgoAAAANSUhEUg7AAAfQAAACWCAYAAAAonXpvAAAfgUlEQVR4Ae2dC9BuVVnHuSN3QaBENA9h5A2IcJxMj8hUkymoQDfClIkmrQZr1EydMqapnKRMc8JmHLBBHadJJaV0lKQDZCmCQiqQ2KERUFARDhcFDpx /33W tznPe/ 3ttaa9/ a2Z9/32Xvt5nvVbl2evtdfee9dtS27bt4mACJmACJm8ACJtBvArv123xbbwImYAImYAImIAJ26K4HJmACJmACJjAAAnboAyhEZ8EETMAETMAE7NBdB0zABEzABExgAATs0AdQiM6CCZiACZiACdihuw6YgAmYgAmYwAAI2KEPoBCdBRMwARMwAROwQ3cdMAETMAETMIEBELBDH0AhOgsmYAImYAImYIfuOmACJm

我认为 $pdf->imagepng() 应该是 FPDF 中的正确函数。

最佳答案

虽然评论建议使用 TCPDF 解决方案,但我确实想说明有一种方法可以完全使用 FPDF 来完成此操作。思路是这样的:

  1. 使用 explode 从 URI 中去除 data:image/png;base64,
  2. base64_decode 解码 URI
  3. 使用file_put_contents 将解码数据保存到PNG 文件中
  4. 生成 PDF 并使用 Image 添加 PNG 文件
  5. unlink删除PNG文件

永远记住错误检查。如果图像无法保存到服务器,您显然不想继续执行。确保始终严格检查函数是否返回 false!

这是我的解决方案。在此示例中,我使用了一个小图像作为一个小 URI。

const TEMPIMGLOC = 'tempimg.png';

$dataURI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAPCAMAAADarb8dAAAABlBMVEUAAADtHCTeKUOwAAAAF0lEQVR4AWOgAWBE4zISkMbDZQRyaQkABl4ADHmgWUYAAAAASUVORK5CYII=";
$dataPieces = explode(',',$dataURI);
$encodedImg = $dataPieces[1];
$decodedImg = base64_decode($encodedImg);

// Check if image was properly decoded
if( $decodedImg!==false )
{
// Save image to a temporary location
if( file_put_contents(TEMPIMGLOC,$decodedImg)!==false )
{
// Open new PDF document and print image
$pdf = new FPDF();
$pdf->AddPage();
$pdf->Image(TEMPIMGLOC);
$pdf->Output();

// Delete image from server
unlink(TEMPIMGLOC);
}
}

关于php - 将 BASE64 编码图像打印到 PDF 文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18484632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com