TCPDF无法映像,因为它使用了错误的目录路径

时间:2012-02-23 14:34:21

标签: php pdf tcpdf

我在我的本地主机上的pdf文档中获取了我的图像,但在生产网站上我收到错误TCPDF ERROR: [Image] Unable to get image我正在使用html img标记来获取图像而src是此图像的目录路径而不是一个网址,但我发现TCPDF正在添加我给它的路径到我的www文件夹的路径,如:

我给tcpdf的图片路径:home / inc_dir / img / pic.jpg
tcpdf在这里查找:home / www / home / inc_dir / pic.jpg

有人可以帮助我找出tcpdf连接目录吗?

4 个答案:

答案 0 :(得分:9)

您也可以只更改图像路径而不是主路径使用:

define('K_PATH_IMAGES', '/path/to/images/');
require_once('tcpdf.php');

这不会破坏字体/和其他tcpdf路径。

答案 1 :(得分:5)

TCPDF使用$_SERVER['DOCUMENT_ROOT']作为所有图像的根目录,并构建与其相关的绝对路径。您可以在$_SERVER或使用此PHP常量更改它:K_PATH_MAIN

define('K_PATH_MAIN', '/path/to/my-images/');
require_once 'tcpdf.php';

答案 2 :(得分:0)

我遇到了同样的问题。但它现在已经解决了。 我已经从

更改了TCPDF.php的代码

旧代码

if ($tag['attribute']['src'][0] == '/') {
   $tag['attribute']['src'] = $_SERVER['DOCUMENT_ROOT'].$tag['attribute']['src'];
}
$tag['attribute']['src'] = urldecode($tag['attribute']['src']);
$tag['attribute']['src'] = str_replace(K_PATH_URL, K_PATH_MAIN, $tag['attribute']['src']);

新代码

if ($tag['attribute']['src'][0] == '/') {
   $tag['attribute']['src'] = $_SERVER['DOCUMENT_ROOT'].$tag['attribute']['src'];
   $tag['attribute']['src'] = urldecode($tag['attribute']['src']);
   $tag['attribute']['src'] = str_replace(K_PATH_URL, K_PATH_MAIN, $tag['attribute']['src']);
}

请试一试。

答案 3 :(得分:0)

我使用图像数据而不是路径。可以使用图像的src属性中的@将其传递到TCPDF,如下所示:

<img src="@<?php echo base64_encode('/path/to/image.png')?>" />

HTML中的img标签采用BASE64编码的字符串,而Image()函数则采用未编码的数据。

我不知道这是否有记载,我通过阅读代码(tcpdf.php,第18824页pp)发现了这一点:

if ($imgsrc[0] === '@') {
    // data stream
    $imgsrc = '@'.base64_decode(substr($imgsrc, 1));
    $type = '';
}