我在本地主机上的pdf文档中获得了我的图像,但在生产网站上,我收到了错误TCPDF ERROR: [Image] Unable to get image
,我使用了一个html img标签来获取图像,src是该图像的目录路径,而不是url,但我发现TCPDF正在添加我给它的路径和我的www文件夹的路径,如:
我提供给tcpdf的图片路径:home/inc_dir/img/pic.jpg
tcpdf在这里查找:home/www/home/inc_dir/pic.jpg
有人能帮我找出tcpdf正在连接目录吗?
您也可以只更改图像路径而不是主路径使用:
define('K_PATH_IMAGES', '/path/to/images/');
require_once('tcpdf.php');
这不会破坏字体/和其他tcpdf路径。
TCPDF使用$_SERVER['DOCUMENT_ROOT']
作为所有图像的根目录,并构建它们与之相关的绝对路径。您可以在$_SERVER
中更改它,也可以使用以下PHP常量:K_PATH_MAIN
:
define('K_PATH_MAIN', '/path/to/my-images/');
require_once 'tcpdf.php';
我使用图像数据而不是路径。可以使用图像src属性中的@将其传递给TCPDF,如下所示:
<img src="@<?php echo base64_encode('/path/to/image.png')?>" />
HTML中的img标记采用BASE64编码的字符串,而不像Image()函数那样采用未编码的数据。
我不知道这是否有记录,我通过阅读代码(tcpdf.php,第18824行)发现了这一点:
if ($imgsrc[0] === '@') {
// data stream
$imgsrc = '@'.base64_decode(substr($imgsrc, 1));
$type = '';
}
我遇到了同样的问题。但现在已经解决了。我已经从更改了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']);
}
请试试这个。