Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TCPDF不使用writeHTML显示图像_Php_Tcpdf - Fatal编程技术网

Php TCPDF不使用writeHTML显示图像

Php TCPDF不使用writeHTML显示图像,php,tcpdf,Php,Tcpdf,这个问题似乎是TCPDF上的常青树。。。 我有一个让我发疯的问题 我有一个html代码,我作为我的PDF模板使用,这里我有我的公司标志。 在localhost Windows上一切正常,但当我联机时,图像不会显示。 注意:我没有收到任何错误(即无法在我的PDF上获取图像错误)图像是简单的空白! 事实上,如果我点击PDF的图片位置,我可以选择它,Adobe会启用复制图片选项 显然图像存在,在这里,权限是正确的。 如果我尝试在那里冲浪,或者查看生成的HTML页面,一切都很好 这是PHP代码: $pd

这个问题似乎是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和绝对url以及相对路径和绝对路径,但问题仍然存在。
有什么想法吗?

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

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

$html=;//这行不通 $html=;//这会奏效的
我为图像src实现了str_替换,现在一切正常

$html = str_replace("../images", $_SERVER["DOCUMENT_ROOT"] . '/images', $html);

在我的例子中,IMG标记在我将完整路径写入文件之前不起作用

不起作用

<img src="/pdfrender/XXX.jpg" width="50" height="50">
工作本地主机示例

<img src="http://site.local/pdfrender/XXX.jpg" width="50" height="50">

您可以将图像类型jpg/png转换为base64。
这可能对你有帮助

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

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

然后它成功了

在我的情况下,我尝试了上面的每一种解决方案,但都无济于事。结果发现我缺少宽度和高度属性。将这些添加到中,并使用根路径最终对我有效:


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

<img src="@Base64encodedImageFile" />

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

我有一小段HTML,一个接一个地放在一个页面上。如果我把第一个放在文件中,它有两个png和一个小文本,png在PDF中是可见的。 如果我把第二个放在文件上,它有两个png和一个小文本,png在PDF上是可见的。 现在,如果我把两个,只有第一个作为图像。第二张是空白图片。如果我更改第二条的图片,图像将可见

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


注意,这似乎只发生在PNG图像上。因此,似乎有一个bug,你不能在一个页面上有两个相同的PNG图像。使用JPG解决了这个问题。

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

这可能是一个透明度问题。。我不确定。。,你也可能会看到有人建议更改tcpdf_config.php。检查一下你的png徽标是否有效。我有一个徽标,它在pdf中显示了多次,但只出现了一次,然后我将png文件转换为jpg,它的效果像charm一样。不知道这背后的原因,但无论如何它是有效的该死,你救了我的命,伙计!!这很愚蠢,但这就是为什么我的magento PDFCCustomer代码没有呈现自定义属性图像的原因!!它是:哎呀,打字错误。。我的意思是渲染:p+1,忽略Rishi Kalia的回答,因为PNG和JPEG都适合我。这是src的外部报价,也解决了我的问题。请注意,这样,您的web统计数据将包含TCPDF作为用户代理,它会增加您服务器上的流量。您必须支付两次,首先是服务器自身的请求+PDF输出,这也是您不想要的。