Ошибка FPDF: отсутствует или неверный файл изображения

Я использую библиотеку FPDF для создания файлов PDF с помощью PHP. Эта библиотека отлично работает с обычным текстом (т. е. PDF-файлы генерируются для любого текста), но это дает мне ошибку FPDF error: Missing or incorrect image file:{MY_FILE_PATH} при попытке добавить изображение на мою страницу PDF. Доступ к этому пути к файлу через браузер, после чего соответствующее изображение отображается нормально.

Мой код:

require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Write(10, 'Example image');
$image_path = MY_FILE_PATH; // This variable contains my actual file path 
$pdf->Image($image_path, 10, 10, 350, 450);
$pdf->Output();

Этот код отлично работает на моем локальном хосте и генерирует соответствующие PDF-файлы даже с изображениями, но после перехода на сервер он не работает.

Я пробовал с такими возможностями, как:

  1. С абсолютными и относительными путями для изображения.

  2. Пробовал с локальным образом, помещенным в ту же папку.

  3. Все форматы изображений, такие как jpg, png и gif.

  4. Также проверил разрешения для изображения и соответствующих папок.

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

Спасибо!

Шива...


person Siva    schedule 05.07.2010    source источник
comment
Можете ли вы показать пример пути, который вы используете?   -  person Pekka    schedule 05.07.2010
comment
вы можете выбрать путь desicomments.com/user/2008/03/7139 /good.jpg в качестве примера. Можем ли мы использовать относительные пути, такие как «/test.jpg», также с FPDF?   -  person Siva    schedule 05.07.2010
comment
Пекка, спасибо за ваш ответ, я понял причину этой проблемы и исправил ее.   -  person Siva    schedule 07.07.2010


Ответы (3)


После долгой борьбы я наконец нашел причину этой проблемы, которую я уже обсуждал здесь.

В основном эта проблема связана с настройкой «allow_url_fopen», которая не включена для моего сервера, я решил эту проблему с помощью CURL. Я даю пошаговую процедуру решения этой проблемы, потому что это может быть полезно для кого-то вроде меня, чтобы избежать пустой траты времени (для поиска решения).

1. Create a temporary file in the local system with write permission.

Ex: $fp = @fopen($local_file_path, 'x'); 
    fclose($fp);

2. Get the remote location file contents using CURL and write that to local file 
which is created in the previous step.

Ex: $curl = new CurlWrapper($remote_file_path);
    $curl->copyToFile($local_file_path);

3. Now send this local file path to FPDF function(image) then the corresponding 
PDF will get generate for the file without any issues.

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

person Siva    schedule 26.08.2010

просто добавь:

allow_url_fopen = ВКЛ.

на php.ini (создайте новый, если он не существует) решает проблему.

http://www.solo-technology.com/blog/2010/04/07/quick-fix-for-url-file-access-is-disabled-issues/

person user1638334    schedule 17.10.2012
comment
@ user1638334, это приводит нас к угрозе безопасности в процессе устранения проблемы, как сказал Никхар, поэтому я решил, что лучше решить эту проблему по-другому (например, с помощью CURL). - person Siva; 18.10.2012
comment
Почему минусовые голоса? Я согласен, что allow_url_include лучше не использовать. Но что это за угроза безопасности от allow_url_fopen? PHP даже по умолчанию включен. - person ficuscr; 12.06.2015

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

$pdf->Image($image_path, 10, 10, 350, 450 ,''); 

попробуйте указать пустую строку для параметра 6 функции $pdf-›Image() или вы можете указать расширение файла, например ( PNG или JPG). в моем случае работала пустая строка ''. потому что я обрезал изображение так, что изображение какое-то время было неправильным. поэтому после этого моя проблема устранена, и я протестировал разные изображения.

person pankaj kumar    schedule 12.03.2021