使用dompdf生成的PDF文件中图片未显示

8
我正在使用DOMPDF将HTML转换为PDF,并在转换后将该PDF文件发送到用户的邮件ID。一切都工作得很完美,但在PDF文件中,我无法看到我的网站logo的图像。我还在stackoverflow上搜索了以前的问题,例如:- error in pdf image using dompdfdompdf and img tag, image wont show 我还将DOMPDF_ENABLE_REMOTE设置为TRUE,并将DOMPDF_PDF_BACKEND设置为CPDF 我的图像标签是:- <img src="http://www.example.com/clients/myprojects/images/logo.png" alt="" /></a> 我提供了我的网站的完整路径,但仍然无法在PDF文件中显示图像。
提前致谢。

如果您仍然在图像中遇到问题,那么您可以在此文件上调试问题:vendor/dompdf/dompdf/src/Image/Cache.php,您将从中了解问题发生的位置。 - Gourav Yadav
12个回答

16

使用完整的目录路径和.jpg图像


1
一年前我尝试使用PNG,但无法工作。所以我改用JPG图像。不确定DOMPDF与PNG的兼容性当前状态。 - Rameshkrishnan S
是的,谢谢。我把我的图像转换成了JPG格式,现在它完美地工作了。谢谢 :) - Rakesh Shetty
1
@RakeshShetty FYI,dompdf需要对PNG图像进行预处理以处理透明度。您需要确保PHP启用了GD支持。 - BrianS
我还可以确认,在v0.5.0版本中,PNG图像无法正常工作,建议使用JPG格式来避免问题!谢谢@Rameshkrishnan_S。 - richhallstoke
如果您仍然在图像中遇到问题,那么您可以在此文件上调试问题:vendor/dompdf/dompdf/src/Image/Cache.php。您将了解问题发生的原因。 - Gourav Yadav

4

这对我有效。

 <img src="<?php echo $_SERVER["DOCUMENT_ROOT"].'/placeholder.jpg';?>"/>
 <img src="<?php echo $_SERVER["DOCUMENT_ROOT"].'\placeholder.jpg';?>"/>
 <img src="<?php echo $_SERVER["DOCUMENT_ROOT"].'./placeholder.jpg';?>"/>

这是最好的。在看到这个答案之前,我无法理解“完整路径”意味着“本地路径”。谢谢。 - Yevgeniy Afanasyev

2
不要输入完整的URL路径,只需输入文件夹名称/文件名.jpg 示例:
<img src="uploads/kuruvi.jpg">

2

在我的情况下,我花了2个小时最终找到了答案。使用URL或路径时,img src无法工作,你应该将其转换为base64格式。

最初的回答

<?php 
$data = file_get_contents('https://teafloor.com/wp-content/themes/teafloor2-0/assets/images/logo.png');
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
?>
<?php echo '<div class="company-logo">
    <img src="'.$base64.'"  alt="base" />
</div>';
?>

或者

<img src="<?php echo $base64; ?>"  alt="base" />

0
//use full directory path something like this    

    $currentsite = getcwd();
    $html = <<<HTML
    <html>
    <img src="{$currentsite}/sites/all/modules/certificate_handler/image002.png" alt="" /></a>

     </html>
    HTML;

抱歉。在突出显示代码时,我错过了那行代码。现已修复 :) - Developer

0

DOMPDF

现在可以使用 png,jpg

这是我使用的代码。

我在根目录中有一个 index.php 文件和一个名为 images 的子文件夹中有图片。

$image ="images/".$_FILES['image_index_name']['name'];
$htm= '';

0

删除alt属性,并将其从自闭合标签(/>)更改为普通标签(>)。这在我的情况下起作用了。

注意:dompdf似乎对img标签上的任何内联样式都有不良反应,因此建议删除它们(如果您正在使用任何内联样式)。


0

如果我没记错的话,你可以在那里放置一个完整的系统路径到该图像 - 绝对或相对于你的脚本


感谢您的回复,但绝对路径或相对路径都不起作用。 - Rakesh Shetty
你的设置是什么?dompdf 是否和你要包含的图像在同一台服务器上? - Ochi

0
我做了这个:
$imgurl       = $graficas[$i]; 
$path_parts   = pathinfo($imgurl);
$graficas[$i] = $path_parts['filename'].".jpg";

已经可以正常工作了。希望这也能对您有所帮助。


-1

您只需要在文件DOMPDF_CONFIG.INC中将行def("DOMPDF_ENABLE_REMOTE", FALSE);更改为true


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接