我正在使用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链接,但没有一个得到任何帮助
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)
确认服务器能够使用 PHPfile_get_contents或cURL下载文件。Image如果服务器上的这两个函数都无法访问该文件,则 TCPDF 将抛出的函数中的第一个错误是“无法获取图像的大小” 。
小智 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)
它奏效了!希望这对你们大多数人有帮助!