我正在使用 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
中的但无法解决问题。
请关心帮助:(
答案 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)服务器证书验证失败。”被显示。因此,这仅仅是一个证书问题。