TCPDF ERROR: [Изображение] Не удалось получить изображение

Я использую TCPDF с модулем печати Drupal для создания 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, но это не могло решить проблему.

Пожалуйста, помогите: (

Ответы

Ответ 1

По-видимому, "TCP файлы" не используются "fopen" -wrappers.

Если вы указываете URL-адрес изображения, TCPDF пытается загрузить его с помощью cURL в директорию "cache", где хранится ваша TCPDF-установка (вы должны проверить, что содержит K_PATH_CACHE -constant),

Итак, я думаю, вы должны иметь права на запись в этом каталоге, что магия работает. Также вам нужно cURL.

Ответ 2

У нас были проблемы с подключением соединений на нашем Linux-сервере example.com. Итак, это заставило нас попробовать на сервере:

curl -v http://www.example.com/image.jpg

Всякий раз, когда TCPDF пытался загрузить изображение с завитом, изображение не было найдено, тем не менее, мы могли бы просмотреть изображение, просто открыв его непосредственно в браузере (например, http://www.example.com/image.jpg).

Мы решили проблему, установив example.com VirtualHost для приема соединений 127.0.0.1 и добавив строку "127.0.0.1 example.com" в/etc/hosts.

Ответ 4

Я обнаружил, что TCPDF будет вызывать ошибку Unable для получения изображения: error, когда src является абсолютной ссылкой. Просто переход к относительной ссылке будет успешно создавать PDF.

Ответ 5

У меня была эта проблема на промежуточном сервере, где docroot сайта был защищен файлом .htaccess(чтобы предотвратить индексирование поисковой системы и другие недоумения)

tcpdf использует curl для извлечения изображения, и он дает эту ошибку, если не может получить доступ к файлу.

Чтобы решить эту проблему, я добавил правило на .htaccess, чтобы разрешить запросы с веб-сервера

Allow from 123.45.6.7.8

Ответ 6

$pdf->Image($base_url.'/'.$node->field_loc_images[0]['filepath'] ,30, 40, 75, 113, 'JPG', '', '', true, 300, '');

Ответ 7

Попробуйте добавить путь к текущему рабочему директорию.

$img = getcwd().'/web/bundles/_bundlename_/img/logo.png';

Ответ 8

В ваших проблемах с шрифтом unicode вам нужно поставить этот синтаксический код:

// set font
$fontname = $pdf->addTTFfont('../your path here/sampletruetype.ttf', 'TrueTypeUnicode', '', 32);

$pdf->SetFont($fontname, '', <font size value here>);

поставьте его перед добавлением страницы...

Ответ 9

В drupal обязательно включите библиотеку tcpdf в свою функцию, а не вверху файла модуля, или вы получите эту ошибку.

Ответ 10

попробуйте это также

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

Ответ 11

Чтобы расширить эту ошибку. Кажется, что он также не работает с встроенными изображениями base64. Это большая проблема для меня прямо сейчас.

Ответ 12

После обновления PHP с 5.5 до 5.6 я потерял часы из-за ошибки изображения,

Я нашел решение здесь из @caligari (комментарий к принятому ответу), и он исправил проблему для меня:

установите CURL следующим образом:

apt-get install php5-curl && /etc/init.d/apache2 restart. 

Ответ 13

В моем случае я пытался

curl -v http://www.example.com/image.jpg

и "curl: (60) проверка сертификата сервера не удалась". было показано. Так что это была просто проблема с сертификатом.