将 BASE64 编码图像打印到 FPDF 文档中 [英] print BASE64 coded image into a FPDF document

查看:25
本文介绍了将 BASE64 编码图像打印到 FPDF 文档中的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've some as base64 stored images in a database. Is it possible to print those data directly in a PDF document, using FPDF?

图像的数据结构

<代码>数据:图像/PNG; BASE64,iVBORw0KGgoAAAANSUhEUg7AAAfQAAACWCAYAAAAonXpvAAAfgUlEQVR4Ae2dC9BuVVnHuSN3QaBENA9h5A2IcJxMj8hUkymoQDfClIkmrQZr1EydMqapnKRMc8JmHLBBHadJJaV0lKQDZCmCQiqQ2KERUFARDhcFDpx/33W tznPe/3ttaa9/a2Z9/32Xvt5nvVbl2evtdfee9dtS27bt4mACJmACJm8ACJtBvArv123xbbwImYAImYAImIAJ26K4HJmACJmACJjAAAnboAyhEZ8EETMAETMAE7NBdB0zABEzABExgAATs0AdQiM6CCZiACZiACdihuw6YgAmYgAmYwAAI2KEPoBCdBRMwARMwAROwQ3cdMAETMAETMIEBELBDH0AhOgsmYAImYAImYIfuOmACJm

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

I think $pdf->imagepng() should be the right function in FPDF.

推荐答案

虽然评论建议使用 TCPDF 解决方案,但我确实想说明有一种方法可以完全使用 FPDF.思考过程是这样的:

While the comments suggested a TCPDF solution, I did want to state that there is a way to do this entirely with FPDF. The thought process is like this:

  1. 使用 explodedata:image/png;base64,>
  2. 使用 base64_decode
  3. 解码 URI
  4. 使用 file_put_contents 将解码后的数据保存到 PNG 文件中一个>
  5. 生成 PDF 并添加带有 Image 的 PNG 文件李>
  6. 使用 unlink
  7. 删除 PNG 文件
  1. Strip data:image/png;base64, from the URI using explode
  2. Decode the URI with base64_decode
  3. Save the decoded data to a PNG file with file_put_contents
  4. Generate a PDF and add the PNG file with Image
  5. Delete the PNG file with unlink

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

Always remember to error check. If the image fails to save to the server you obviously do not want to continue execution. Make sure to always strictly check if the functions return false!

这是我的解决方案.在这个例子中,我使用了一个小图片作为一个小 URI.

Here is my solution. I used a tiny image for a small URI in this example.

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);
    }
}

这篇关于将 BASE64 编码图像打印到 FPDF 文档中的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆