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

问题描述 投票:0回答:5

我在本地主机上的 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 正在连接目录吗?

php pdf tcpdf
5个回答
15
投票

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

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

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


10
投票

TCPDF 使用

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

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

4
投票

我使用图像数据而不是路径。可以使用图像的 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 = '';
}

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

请尝试这个。


0
投票

define ('K_PATH_IMAGES', 目录名(FILE).'/assets/imgs/template/');

© www.soinside.com 2019 - 2024. All rights reserved.