Я использую 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: [Изображение] Не удалось получить изображение
Это может быть связано с невозможностью 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);
и это сработало! Надеюсь, это поможет большинству из вас!