TCPDF ERROR: [Image] Unable to get image


TCPDF ERROR: [Image] Unable to get image

我使用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中,但不能解决问题。

请帮忙:

TCPDF显然不使用"fopen"-包装器。

如果您提供了一个图像的URL, TCPDF尝试用cURL将其下载到存储TCPDF安装的"cache"目录中(您必须检查K_PATH_CACHE -常量包含的内容以确保)。

所以我猜你必须在这个目录中有写权限,魔法才会起作用。你还需要启用cURL

我们在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连接并在/etc/hosts中添加"127.0.0.1 example.com"行来解决这个问题。

只需使用图像路径为"images/your_image.png"而不是PDF html中的"http://yourdomain.com/images/your_image.png"。

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

我在一个临时服务器上遇到了这个问题,这个服务器的根目录是由一个。htaccess文件保护的(为了防止搜索引擎索引和其他混淆)

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

为了解决这个问题,我在。htaccess中添加了一个规则,允许来自web服务器 的请求。
Allow from 123.45.6.7.8

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

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png';
$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');

在你的字体unicode问题,你需要把这个语法代码:

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

在drupal中,请确保将tcpdf库包含在函数中,而不是在模块文件的顶部,否则您将得到此错误

try this also

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);
}

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

在我将PHP 5.5升级到5.6之后,由于一个图像错误,我损失了几个小时,

我从@caligari(对已接受的答案的评论)找到了解决方案,它为我解决了这个问题:

安装CURL:

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

在我的情况下,我试图

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

显示"curl:(60)服务器证书验证失败"。所以这只是一个证书问题。