使用 DOMPDF 获取 PDF 中的本地图像

问题描述 投票:0回答:1

我是 PHP 新手,正在尝试为我的作业构建一个小项目。

我正在尝试使用 PHP(DOMPDF 包)将一些 HTML 转换为 PDF。 HTML 确实包含一些标签来输出本地存储在该项目文件夹中的一些图像。

我目前收到“图像未找到或类型未知”错误,我发现这种情况在尝试执行此操作时很常见。

我做了一些研究并尝试了很多不同的事情,但不幸的是我似乎没有取得任何进展。

有人知道我可能做错了什么吗?

只是我项目中的一个小片段:

index.php

<?php 

require_once 'packages/dompdf/autoload.inc.php'; 

use Dompdf\Dompdf;

$dompdf = new Dompdf();

$dompdf->loadHtml("<img src='photo.jpeg'>");

$dompdf->setPaper('A4', 'portrait'); 
 
$dompdf->render(); 

$dompdf->stream("test-pdf", array("Attachment" => 0));

?>

图像与index.php文件存储在同一目录中。我使用 XAMPP 作为开发环境。

希望这是正确描述的。谢谢大家并感谢大家的支持!

php dompdf
1个回答
0
投票

正如 @KIKOSoftware 在评论中提到的,

src
标签的
img
属性可以包含absolute URI或base64编码的图像数据。您可以使用以下辅助函数来动态生成后者。

function ImageToDataUrl(String $filename) : String {
    if(!file_exists($filename))
        throw new Exception('File not found.');
    
    $mime = mime_content_type($filename);
    if($mime === false) 
        throw new Exception('Illegal MIME type.');

    $raw_data = file_get_contents($filename);
    if(empty($raw_data))
        throw new Exception('File not readable or empty.');
    
    return "data:{$mime};base64," . base64_encode($raw_data);
}

然后将像这样使用:

$dompdf->loadHtml("<img src='" . ImageToDataUrl('photo.jpeg') . "'>");
© www.soinside.com 2019 - 2024. All rights reserved.