7

这个问题似乎是 TCPDF 上的常青树......
我有一个让我发疯的问题。

我有一个 html 代码,用作我的 PDF 的“模板”,这里有我的公司徽标。
在本地主机(Windows)上一切正常,但是当我上网时,图像没有显示。
请注意:我的PDF 上没有任何错误(即无法获取图像错误),图像是简单的空白!
事实上,如果我在应该是图像的位置单击 PDF,我可以选择它,然后 Adob​​e 启用“复制图像”选项。

显然图像存在,在这里,并且许可是正确的。
如果我尝试在那里冲浪或查看生成的 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(相对和绝对)和路径(相对和绝对),问题仍然存在。有任何想法吗?

4

10 回答 10

29

这不是您的问题,但对于将来遇到类似问题的人来说,这是一个可能的解决方案。请确保 HTML 属性有双引号。

$html = "<img src='...' />"; // This will not work

$html = '<img src="..." />'; // This will work
于 2014-12-11T22:53:50.743 回答
9

由于事情在本地工作,因此您可以尝试将图像类型从png更改为jpg,并在相应地修改代码并将jpg上传到服务器后进行检查。

于 2012-12-05T06:38:31.253 回答
2

您可以将图像类型“jpg/png”转换为 base64。 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA...."/> 这可能会帮助你!

于 2017-02-23T09:42:47.200 回答
2

就我而言,我尝试了上述所有解决方案均无济于事。原来我缺少宽度和高度属性。添加这些,并使用根路径最终为我工作:

<img src="/images/image.png" width="50" height="50"/>

于 2019-08-21T20:40:22.363 回答
1

在我的情况下,IMG 标签在我写入文件的完整路径之前不起作用

不工作

<img src="/pdfrender/XXX.jpg" width="50" height="50">

工作(本地主机示例)

<img src="http://site.local/pdfrender/XXX.jpg" width="50" height="50">
于 2016-05-05T12:43:27.903 回答
0

我为图像 src 实现了一个 str_replace,现在可以正常工作了。

$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html);
于 2015-07-13T08:34:48.250 回答
0

我不得不“重新保存”图像:

$image = 'images/logo_example.png';    
imagepng(imagecreatefrompng($image),$image);

然后它起作用了。

于 2017-09-14T19:52:36.880 回答
0

也可以将图像数据内联添加为 base64:

<img src="@Base64encodedImageFile" />
于 2020-08-19T12:42:45.103 回答
0

这不是一个真正的答案,但由于每个人都试图添加一个“砖块”,这是我面临的一个非常奇怪的细节:

我在页面上一个接一个地放置了小的 HTML“条”。如果我将第一个具有 2 个 png 和一个小文本的文件放在文件上,则 png 在 PDF 上可见。如果我将具有 2 个 png 和一个小文本的第二个文件放在文件上,则 png 在 PDF 上可见。现在,如果我把这两个,只有第一个作为图像。第二张是空白图片。如果我更改第二条带的图片,图像就会变得可见。

细节:第一条和第二条使用相同的图像!

请注意,这似乎只发生PNG 图像上。所以似乎有一个错误,你不能在一个页面上有两次相同的 PNG 图像。使用JPG解决问题。

于 2020-12-05T13:21:33.023 回答
0

我遇到了同样的问题,它在本地工作并且在服务器空白图像上。我发现 htaccess 密码是问题所在。我已将带有行Satisfy any的 .htaccess 文件放入带有图片的文件夹中,现在它可以正常工作了。

于 2020-12-08T14:34:35.110 回答