Ошибка TCPDF: невозможно получить размер изображения

Я использую TCPDF для создания динамически созданного PDF-файла. В моем файле pdf изображение создается на основе ввода пользователем, и я хочу добавить это изображение в свой файл pdf. Вот мой код

$map_image = "example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area="; $pdf->Image ($map_image, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); 

Если я вставляю « example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area= » это на моем URL-адресе, создайте изображение так, как я хотел, но если поместить этот URL-адрес, т работы. В нем указано Невозможно получить размер изображения

Но если я положу что-то вроде этого

 $map_image = '/wp-content/themes/v3/resources/images/public/logo_side.jpg'; 

Он может успешно сгенерировать PDF с этим изображением.

Как я могу это решить?

Я посетил следующую ссылку stackoverflow, но ни одна из них не помогла

tcpdf работает на localhost, но не на моем сервере, дающем ошибку TCPDF ERROR: [Image] Невозможно получить изображение:

Ошибка изображения cakephp tcpdf [Изображение] Невозможно получить изображение

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

Solutions Collecting From Web of "Ошибка TCPDF: невозможно получить размер изображения"

Это может быть связано с невозможностью filesize() stat() с файлом stat() удаленным файлом изображения через HTTP-обертку (поскольку обертка не поддерживает его).

В соответствии с документацией метода TCPDF image () вы можете передавать данные изображения напрямую, добавив его с помощью символа @ . Таким образом, вы можете получить необработанные данные изображения, а затем передать его в TCPDF следующим образом:

 $img = file_get_contents('http://example.com/wp-content/themes/example/map_image_leasing.php/?city=Calgary&suit_type=&min_area=&max_area='); $pdf->Image('@' . $img, 55, 19, '', '', 'JPG', '', 'T', false, 300, '', false, false, 0, false, false, false); 

Обратите внимание, что я не тестировал это (и документация TCPDF разрежена), поэтому вам может потребоваться немного поэкспериментировать, чтобы заставить его работать правильно.


Редактировать:

Это полностью рабочий пример (на моем ПК). Используйте это, чтобы проверить, можете ли вы успешно получить изображение и вывести PDF в свой браузер. Конечно, вам нужно установить известный допустимый путь для изображения!

 <?php require './tcpdf/tcpdf.php'; $pdf = new TCPDF(); $pdf->AddPage(); $img = file_get_contents('http://img.ruphp.com/php/your.jpg'); $pdf->Image('@' . $img); $pdf->Output(); ?> 

Убедитесь, что сервер может использовать файлы file_get_contents или cURL для загрузки файла. «Невозможно получить размер изображения» – это первая ошибка в функции Image которую TCPDF будет бросать, если файл недоступен для обеих этих функций на сервере.

Обязательно используйте относительный путь, несколько раз абсолютно путь не работает

ok: "../../myImage.png"

неверно: « http://www.example.com/myImage.png »

Чтобы отладить эту проблему, вы можете удалить @ from @getimagesize ($ file) в tcpdf.php по строке 6850. Поиск [Image] Невозможно получить размер изображения: и прокрутите несколько строк вверх. @ Скрывает фактическое сообщение об ошибке.

Если вы можете достичь URL-адреса изображения из браузера, возможно, ваша система не указывает URL-адрес запрашиваемому хосту. Соответствующее сообщение – getimagesize (): php_network_getaddresses: getaddrinfo не удалось:. Это означает, что ваша локальная конфигурация php не имеет понятия, где искать URL. В этом случае вам нужно изменить файл / etc / hosts и указать локальную настройку на ip urls. Это часто является проблемой для локальных настроек.

Например 127.0.0.1 yoururlhere.local

У меня была ошибка в магазине Magento.

Если вы откроете tcpdf.php вы найдете этот код, $ file был URL-адресом, когда он должен быть указан в пути к файлу:

 // check if is a local file if (!@file_exists($file)) { // try to encode spaces on filename $tfile = str_replace(' ', '%20', $file); 

Для быстрого исправления я добавил этот код:

 $file = str_replace("http://theurliwantgone/","",$tfile); 

и это сработало! Надеюсь, это поможет большинству из вас!