TCPDF错误:无法获取图像的大小

Mit*_*vro 11 php image tcpdf

我正在使用TCPDF来创建动态生成的pdf文件.在我的pdf文件中,根据用户输入生成图像,我想在我的pdf文件中添加该图像.这是我的代码

 $map_image = "example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area=";

$pdf->Image ($map_image, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
Run Code Online (Sandbox Code Playgroud)

如果我在我的网址上粘贴" example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area= "这个创建我想要的图像,但是如果放入此网址,它就不会工作.它说无法获得图像的大小

但是,如果我把这样的东西

$map_image = '/wp-content/themes/v3/resources/images/public/logo_side.jpg';
Run Code Online (Sandbox Code Playgroud)

它可以成功生成带有该图像的pdf.

我该如何解决?

我访问了以下stackoverflow链接,但没有一个得到任何帮助

tcpdf在localhost上工作但在我的服务器上没有给出错误TCPDF错误:[Image]无法获取图像:

cakephp tcpdf图像错误[图片]无法获取图片

TCPDF错误:[图像]无法获取图像

tim*_*ton 13

这可能是由于通过HTTP包装器filesize()未能stat()通过远程映像文件(因为包装器不支持它).

根据TCPDF image()方法文档,您可以通过在@符号前面添加图像数据来直接传递图像数据.因此,您可以获取原始图像数据,然后将其传递给TCPDF,如下所示:

$img = file_get_contents('http://example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area=');

$pdf->Image('@' . $img, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false);
Run Code Online (Sandbox Code Playgroud)

请注意,我没有对此进行测试(并且TCPDF文档很稀疏),因此您可能需要进行一些实验才能使其正常工作.


编辑:

这是一个完全有效的例子(在我的电脑上).使用此选项可测试您是否可以成功检索图像并将PDF输出到浏览器.当然,您需要为图像设置已知的有效路径!

<?php

require './tcpdf/tcpdf.php';

$pdf = new TCPDF();

$pdf->AddPage();

$img = file_get_contents('http://path/to/your.jpg');
$pdf->Image('@' . $img);

$pdf->Output();

?>
Run Code Online (Sandbox Code Playgroud)


Sea*_*hey 5

确认服务器能够使用 PHPfile_get_contentscURL下载文件。Image如果服务器上的这两个函数都无法访问该文件,则 TCPDF 将抛出的函数中的第一个错误是“无法获取图像的大小” 。

  • 我在 PLESK 更新(2020 年)后遇到了这个问题。TCPDF 在其图像函数中不再接受 url。此外,pdf 视图中的 &lt;img 标签不再起作用。每次都会给出错误 TCPDF ERROR: [Image] 无法获取图像的大小。当使用像 /var/www/etc 这样的服务器路径时,功能运行得很好。经过一番挖掘后,我发现 php.ini 设置:allow_url_include 设置为 Off 而不是 On。这导致 file_get_contents 函数不再起作用。将此设置更改为“开”修复了错误消息,并且 TCPDF 再次工作。 (2认同)

小智 5

我的 Magento 商店出现此错误。

如果你打开tcpdf.php你会发现这个代码,$file 是一个 url,而它应该是文件的路径:

// check if is a local file
if (!@file_exists($file)) {
        // try to encode spaces on filename
        $tfile = str_replace(' ', '%20', $file);
Run Code Online (Sandbox Code Playgroud)

为了快速修复,我添加了以下代码:

$file = str_replace("http://theurliwantgone/","",$tfile);
Run Code Online (Sandbox Code Playgroud)

它奏效了!希望这对你们大多数人有帮助!