这个问题似乎是TCPDF的常青树...... 我有一个让我疯狂的问题。
我有一个HTML代码,我用作PDF的“模板”,这里有我的公司徽标 在localhost(Windows)上一切正常,但是当我在线移动时,图像不会显示 注意:我的PDF上没有任何错误(即无法获取图像错误),图像很简单! 事实上,如果我点击它应该是图像的位置上的PDF,我可以选择它,并且Adobe启用“复制图像”选项。
显然图像存在,在这里,许可是正确的 如果我尝试在那里冲浪,或者查看生成的HTML页面,一切都很好。
这是PHP代码:
$pdf->SetMargins($params->get('pdfMarginLeft', 15), $params->get('pdfMarginTop', 27), $params->get('pdfMarginRight', 15));
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->SetFont('helvetica', '', 8);
$pdf->AddPage();
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->lastPage();
然后这是我的HTML代码(我只是跳过了除图像之外的所有内容):
<img alt="logo black" src="../images/logo_black.png" height="60" width="210" />
我尝试过使用url(相对和绝对)以及路径(相对和绝对),问题仍然存在。 有什么想法吗?
答案 0 :(得分:20)
这不是您的问题,但对于将来遇到类似问题的人来说,这是一个可行的解决方案。 请确保HTML属性有双引号。
$html = "<img src='...' />"; // This will not work
$html = '<img src="..." />'; // This will work
答案 1 :(得分:7)
由于本地工作正常,因此您可以尝试将图像类型从 png 更改为 jpg ,并在相应修改代码并上传 jpg后检查在服务器上。
答案 2 :(得分:1)
在我的情况下,IMG标签在我写完文件的完整路径
之前无法正常工作不工作
<img src="/pdfrender/XXX.jpg" width="50" height="50">
工作(localhost示例)
<img src="http://site.local/pdfrender/XXX.jpg" width="50" height="50">
答案 3 :(得分:0)
我为图像src实现了一个str_replace,现在可以正常工作了。
$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html);
答案 4 :(得分:0)
我不得不“重新保存”图片:
$image = 'images/logo_example.png';
imagepng(imagecreatefrompng($image),$image);
然后它奏效了。
答案 5 :(得分:0)
就我而言,我尝试了以上所有解决方案均无济于事。原来我缺少宽度和高度属性。添加这些内容并使用根路径最终对我有用:
<img src="/images/image.png" width="50" height="50"/>
答案 6 :(得分:0)
也可以内联添加图像数据作为base64:
<img src="@Base64encodedImageFile" />
答案 7 :(得分:0)
这并不是一个真正的答案,但是由于每个人都在尝试添加“砖”,这是我面临的一个非常奇怪的细节:
我在页面上一个接一个地放了一些小的HTML“条带”。如果我将第一个文件包含2个png和一个小的文本放在文件上,则png在PDF上可见。 如果我将第二个文件包含2个png和一个小的文本放在文件上,则png在PDF上可见。 现在,如果我放两个,则仅将第一个作为图像。第二张为空白图片。如果我更改第二个条带的图片,则图像变为可见。
详细信息:第一和第二条带使用相同的图像!
请注意,这似乎是仅发生的PNG图片。因此,似乎有一个错误,您不能在页面上有两次相同的PNG图像。使用JPG解决了问题。
答案 8 :(得分:0)
我遇到了同样的问题,它在本地正常工作并且在服务器空白映像上。我发现htaccess密码是问题所在。我已经将带有行Satisfy any
的.htaccess文件放到带有图片的文件夹中,现在可以使用了。