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

时间:2011-10-05 17:57:26

标签: php tcpdf

我正在使用 TCPDF 与Drupal的 print 模块生成PDF文章,&当我点击链接生成PDF时,以及以下错误消息结束:

TCPDF ERROR: [Image] Unable to get image: http://localhost/pathToDrupal/themes/bartik/logo.png

图像存在于指定的位置。 我试过申请:

allow_url_fopen = On;
allow_url_include = On;
php.ini中的

但无法解决问题。

请关心帮助:(

12 个答案:

答案 0 :(得分:25)

显然TCPDF不使用“fopen”-wrappers。

如果您提供图像的URL,TCPDF会尝试使用cURL将其下载到存储TCPDF安装的“缓存”目录中(您必须检查K_PATH_CACHE - 常量包含的内容是什么当然)。

所以我猜你必须在这个神奇的工作目录中拥有写权限。您还需要启用cURL。

答案 1 :(得分:8)

我们在linux“example.com”服务器中处理连接的方式存在问题。所以这导致我们尝试服务器:

curl -v http://www.example.com/image.jpg

每当TCPDF尝试下载带有curl的图像时,都找不到图像,但是,我们可以直接在浏览器中打开图像来查看图像(例如http://www.example.com/image.jpg)。

我们通过将example.com VirtualHost设置为接受127.0.0.1连接并将“127.0.0.1 example.com”行添加到/ etc / hosts来解决了这个问题。

答案 2 :(得分:5)

只需将图片路径用作" images / your_image.png"而不是" http://yourdomain.com/images/your_image.png"在PDF html中。

答案 3 :(得分:4)

我发现当src是绝对链接时,TCPDF会抛出Unable来获取Image:error。只需更改为相对链接即可成功创建PDF。

答案 4 :(得分:3)

我在登台服务器上遇到此问题,该站点的docroot受.htaccess文件保护(以防止搜索引擎索引和其他混淆)

tcpdf使用curl来获取图像,如果它无法访问该文件,则会出现此错误。

为了解决这个问题,我在.htaccess中添加了一条规则,允许来自网络服务器的请求

Allow from 123.45.6.7.8

答案 5 :(得分:2)

$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');

答案 6 :(得分:2)

尝试按当前工作目录添加路径。

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png';

答案 7 :(得分:1)

在您的字体unicode问题中,您需要输入以下语法代码:

// set font
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32);

$pdf->SetFont($fontname, '', <font size value here>);

在添加页面之前添加...

答案 8 :(得分:0)

试试这个

foreach($node->field_loc_images as $key=> $s)
{
    $pdf->Image($base_url.'/'.$s['filepath'], $x, $y, $w, $h, 'JPG', '', '', false, 300, '', false, false, 0, $fitbox, false, false);
}

答案 9 :(得分:0)

扩展错误。它似乎也失败了base64嵌入式图像。这对我来说是个大问题。

答案 10 :(得分:0)

我将PHP 5.5升级到5.6后,因图像错误而丢失了几个小时

我在@caligari找到了解决方案(对已接受答案的评论)并为我解决了问题:

像这样安装CURL:

apt-get install php5-curl && /etc/init.d/apache2 restart. 

答案 11 :(得分:0)

就我而言,我试图

curl -v http://www.example.com/image.jpg

,并且“ curl:(60)服务器证书验证失败。”被显示。因此,这仅仅是一个证书问题。