我使用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)服务器证书验证失败"。所以这只是一个证书问题。