Невозможно изображение TCPDF, потому что он использует неправильный путь к каталогу - PullRequest
8 голосов
/ 23 февраля 2012

Я получаю свои изображения в своем 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 объединяет каталоги?

Ответы [ 4 ]

9 голосов
/ 19 февраля 2014

Вы также можете изменить только путь к изображению вместо использования основного пути:

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

Это не сломает шрифты / и другие пути tcpdf.

5 голосов
/ 24 октября 2012

TCPDF использует $_SERVER['DOCUMENT_ROOT'] в качестве корневого каталога всех ваших изображений и строит их абсолютные пути относительно него. Вы можете изменить его либо в $_SERVER, либо с помощью этой постоянной PHP: K_PATH_MAIN:

define('K_PATH_MAIN', '/path/to/my-images/');
require_once 'tcpdf.php';
0 голосов
/ 23 ноября 2018

Я использую данные изображения вместо путей. Его можно передать в TCPDF с помощью @ в атрибуте src изображения, например:

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

img-тег в HTML принимает строку в кодировке BASE64, в отличие от функции Image (), которая принимает незашифрованные данные.

Я не знаю, задокументировано ли это, я нашел это, прочитав код (tcpdf.php, строка 18824 стр.):

if ($imgsrc[0] === '@') {
    // data stream
    $imgsrc = '@'.base64_decode(substr($imgsrc, 1));
    $type = '';
}
0 голосов
/ 06 июля 2013

У меня та же проблема.Но теперь это решено.Я изменил код 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']);
}

Пожалуйста, попробуйте это.

...